Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Supprimer le contenu d'un repertoire SAUF un fichier particulier

22 réponses
Avatar
Hugues MORIN
--94eb2c062a4c9997e4053393bcd8
Content-Type: text/plain; charset=UTF-8

Bonjour a tous



J'ai besoin de supprimer tout le contenu d'un repertoire SAUF le fichier
index.php

Il me semblai que cela aurai du le faire:
find /var/www/monsite/cache ! -name 'index.php' -exec rm -rf {} \;

mais en pratique cela supprime aussi le repertoire "cache"

La syntaxe me semble correcte mais comment faire pour ecarter le dossier
"cache" de la suppression?


Cette solution n'est peut etre pas la bonne pour ce que je veux faire.
En avez-vous une autre qui fonctionne?


Merci

Cordialement
Hugues

--94eb2c062a4c9997e4053393bcd8
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div><div><div><div>Bonjour a tous<br><br><br><b=
r></div><div>J&#39;ai besoin de supprimer tout le contenu d&#39;un repertoi=
re SAUF le fichier index.php<br><br></div><div>Il me semblai que cela aurai=
du le faire:<br>find /var/www/monsite/cache ! -name &#39;index.php&#39; -e=
xec rm -rf {} \;<br><br></div><div>mais en pratique cela supprime aussi le =
repertoire &quot;cache&quot;<br><br></div><div>La syntaxe me semble correct=
e mais comment faire pour ecarter le dossier &quot;cache&quot; de la suppre=
ssion?<br><br></div><br></div>Cette solution n&#39;est peut etre pas la bon=
ne pour ce que je veux faire.<br></div>En avez-vous une autre qui fonctionn=
e?<br><br><br></div>Merci<br><br></div>Cordialement<br></div>Hugues<br><div=
><div><div><div><div><div><div><br></div></div></div></div></div></div></di=
v></div>

--94eb2c062a4c9997e4053393bcd8--

2 réponses

1 2 3
Avatar
VieuxGeek DuSystem
Bonjour

Oui effectivement mon ls est mauvais le -l est à suprimer, j'ai
répondu trop vite toutes mes excuses.
D'un autre coté la commande find est meilleur solution que m'a boucle :-)

Cordialement
Stéphane

Le 24 mai 2016 à 23:07, Belaïd a à ©crit :
Bonsoir,
est-tu sur de ta commande: for i in $(ls -l /var/www/monsite/cache | grep -v
'index); ?
car la commande: ls -l | grep -v 'index' donne comme résultats des l ignes où
chaque champ (le séparateur de champ par défaut est un espace) correspond
aux: droits du fichier, le propriétaire, groupe ... et enfin le nom du
fichier. Donc avec la commande rm -rf $i , $i prendra comme valeur chaque
champs de cette ligne (propriétaire du fichier, groupe, ...).

Le 24 mai 2016 à 12:24, VieuxGeek DuSystem a écrit :

En faite je me suis un peu trompé :-)

cd /var/www/monsite/cache
for i in $(ls -l /var/www/monsite/cache | grep -v 'index'); do echo $i;
done

Et si tu as bien tous les fichiers listés sauf index, y a plus qu'a rm

cd /var/www/monsite/cache
for i in $(ls -l /var/www/monsite/cache | grep -v 'index); do rm -rf $i;
done

C'est mieux :-)

Le 24 mai 2016 à 12:22, VieuxGeek DuSystem a écrit
:
> Boujour
>
> Je propose
>
> cd /var/www/monsite/
> for i in $(ls -l /var/www/monsite/ | grep -v 'cache'); do echo $i; don e
>
> Et si tu as bien tous les fichiers listés sauf cache, y a plus qu 'a rm
>
> cd /var/www/monsite/
> for i in $(ls -l /var/www/monsite/ | grep -v 'cache'); do rm -rf $i;
> done
>
> Fait une sauvegarde avant pour mon bien :-)
>
> Cordialement
> Stéphane
>
> Le 24 mai 2016 à 12:08, Hugues MORIN a éc rit :
>> Bonjour a tous
>>
>>
>>
>> J'ai besoin de supprimer tout le contenu d'un repertoire SAUF le
>> fichier
>> index.php
>>
>> Il me semblai que cela aurai du le faire:
>> find /var/www/monsite/cache ! -name 'index.php' -exec rm -rf {} ;
>>
>> mais en pratique cela supprime aussi le repertoire "cache"
>>
>> La syntaxe me semble correcte mais comment faire pour ecarter le
>> dossier
>> "cache" de la suppression?
>>
>>
>> Cette solution n'est peut etre pas la bonne pour ce que je veux faire .
>> En avez-vous une autre qui fonctionne?
>>
>>
>> Merci
>>
>> Cordialement
>> Hugues
>>






--
< Belaid >
Avatar
andre_debian
Si cette proposition n'a pas déjà été faite :

find . -name "*" | grep -v <fichier-à-garder> | xargs rm

Efface tous les fichiers sauf celui à garder,
récursivement à partir du répertoire ou on tape la commande.

À exécuter avec GRANDE précaution, risque d'effacement compl et... !!!

André
1 2 3