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--

10 réponses

1 2 3
Avatar
Belaïd
--001a113cd14acb61fa053393dca0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

il aussi d'autre possibilités

Le 24 mai 2016 à 12:16, Belaïd a à ©crit :

Bonjour,
Voici une petite correction sans l'option -r:
find /var/www/monsite/cache ! -name "index.php" -exec rm -f {} ;



Le 24 mai 2016 à 12:08, Hugues MORIN a écrit :

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 >






--
< Belaid >

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

<div dir="ltr">il aussi d&#39;autre possibilités<br></div><div class ="gmail_extra"><br><div class="gmail_quote">Le 24 mai 2016 à 12:16 , Belaïd <span dir="ltr">&lt;<a href="mailto: com" target="_blank"></a>&gt;</span> a écrit :<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-l eft:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Bonjour,<br ></div>Voici une petite correction sans l&#39;option -r:<br>find /var/www/m onsite/cache ! -name &quot;index.php&quot; -exec rm -f {} ;<br><br></div>< div><br></div></div><div class="gmail_extra"><div><div class="h5"><br>< div class="gmail_quote">Le 24 mai 2016 à 12:08, Hugues MORIN <span d ir="ltr">&lt;<a href="mailto:" target="_blank">morinh @gmail.com</a>&gt;</span> a écrit :<br><blockquote class="gmail_quot e" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div dir="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<span><font color="#88 8888"><br></font></span></div><span><font color="#888888">Hugues<br><div> <div><div><div><div><div><div><br></div></div></div></div></div></div></div ></font></span></div>
</blockquote></div><br><br clear="all"><br></div></div><span class="HOE nZb"><font color="#888888">-- <br><div>&lt; Belaid &gt;</div>
</font></span></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_sig nature">&lt; Belaid &gt;</div>
</div>

--001a113cd14acb61fa053393dca0--
Avatar
Belaïd
--001a113cdc66e38580053393d9cd
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Bonjour,
Voici une petite correction sans l'option -r:
find /var/www/monsite/cache ! -name "index.php" -exec rm -f {} ;



Le 24 mai 2016 à 12:08, Hugues MORIN a écrit :

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 >

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

<div dir="ltr"><div><div>Bonjour,<br></div>Voici une petite correction sa ns l&#39;option -r:<br>find /var/www/monsite/cache ! -name &quot;index.php& quot; -exec rm -f {} ;<br><br></div><div><br></div></div><div class="gma il_extra"><br><div class="gmail_quote">Le 24 mai 2016 à 12:08, Hugue s MORIN <span dir="ltr">&lt;<a href="mailto:" target= "_blank"></a>&gt;</span> a écrit :<br><blockquote clas s="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;pad ding-left:1ex"><div dir="ltr"><div><div><div><div><div><div>Bonjour a tou s<br><br><br><br></div><div>J&#39;ai besoin de supprimer tout le contenu d& #39;un repertoire 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;in dex.php&#39; -exec rm -rf {} ;<br><br></div><div>mais en pratique cela sup prime aussi le repertoire &quot;cache&quot;<br><br></div><div>La syntaxe me semble correcte mais comment faire pour ecarter le dossier &quot;cache&quo t; de la suppression?<br><br></div><br></div>Cette solution n&#39;est peut etre pas la bonne pour ce que je veux faire.<br></div>En avez-vous une autr e qui fonctionne?<br><br><br></div>Merci<br><br></div>Cordialement<span cla ss="HOEnZb"><font color="#888888"><br></font></span></div><span class ="HOEnZb"><font color="#888888">Hugues<br><div><div><div><div><div><div ><div><br></div></div></div></div></div></div></div></font></span></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_sig nature">&lt; Belaid &gt;</div>
</div>

--001a113cdc66e38580053393d9cd--
Avatar
VieuxGeek DuSystem
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; don e

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; do ne

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; done

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 écrit :
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

Avatar
VieuxGeek DuSystem
Boujour

Je propose

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

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 écrit :
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

Avatar
Jean-Marc
--Signature=_Tue__24_May_2016_13_01_16_+0200_BWIq8NbnQIsv4bOD
Content-Type: text/plain; charset=UTF-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Tue, 24 May 2016 12:08:20 +0200
Hugues MORIN écrivait :

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?



Tu peux aussi jouer avec les négations dans les regexp.
cd /var/www/monsite/cache; rm -fr !(index.php)

Attention, cela nécessite d'activer extglob.

Voilà comment vérifier, activer, désactiver extglob :
shopt extglob
shopt -s extglob
shopt -u extglob

Si tu comprends l'anglais, une chouette page :
http://stackoverflow.com/questions/216995/how-can-i-use-inverse-or-negative -wildcards-when-pattern-matching-in-a-unix-linu





Merci

Cordialement
Hugues




Jean-Marc

--Signature=_Tue__24_May_2016_13_01_16_+0200_BWIq8NbnQIsv4bOD
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJXRDR8AAoJEEBxy1wt6cT8pLEQAJ/KuBGFQtV+QvNWg7ZmjDB2
Nv7XdEZQt53yt7TQDoPFzZdg2GKoLTkg1B4HkeznU0MYJ25N4ejYfGxhz4HbnRei
X0oxGjobAAdul5NaNNvQGJSK52ugekzEo31K9VOYCW6wmdWbONAvZrkF2gFAsVXh
xdqxCNuofEQcaYDzFHDwazEKJ+bxauSr4KlRrUoVJzLjG/9YQWBkElYZe8RgaDY6
Gj5rY5/6IzkZw7LpAhASmhLN7Vgn50zLOT6ZYaMTzURsaEVnzlIKOAKlNqt02T1H
mnMFs2Kru7H9wrIDgdqjrDc8wAaATGjHoFh+xD5xXCh905c6Tflybcig0EfcLCcG
0IYseeYnYSFHlD70w2EwWEPdNQW2m0kDYU3X9JN663CIBcYFteDwfxxRKvKh77qk
vhaal4DcK+yBdJTFX1xGyc4M3of+AiwlSgc/oq2vNpw90lmcQm99HAh07fpuk3Um
TwlNLK3D39ifmWTqwgXNw06yIbQlEObRxOyTNZBQOlNJX3FhdYGACwYmYqnlT6Ft
Q948QdarXJ/JTBWPFcJYZLpUD08Eu3jYYU8lfgwH7OCWLOimPPyhGtsw4muGVfVB
qOFhloC+kef0aLH3/I6ImaOJeBhciY6xB55KZiACRa3/9GbL8fCUg/OHG8WH6Ln8
kvuHpvMwQJ7Fqk2Y1TWh
=cITB
-----END PGP SIGNATURE-----

--Signature=_Tue__24_May_2016_13_01_16_+0200_BWIq8NbnQIsv4bOD--
Avatar
francois
On Tue, May 24, 2016 at 12:08:20PM +0200, Hugues MORIN wrote:
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?



find /var/www/monsite/cache ! -name 'index.php' -delete

ou

find /var/www/monsite/cache -depth ! -name 'index.php' ( ( -type f -exec rm '{}' ; ) -o ( -type d -exec rmdir '{}' ; ) )

Cela évite le "rm -rf" qui supprime tout. La suppression des dossiers
dans lesquels il restera des fichiers échouera.

Par exemple :

$ find ./var/www/monsite/cache
./var/www/monsite/cache
./var/www/monsite/cache/rep2
./var/www/monsite/cache/rep2/otherfile2b
./var/www/monsite/cache/rep2/otherfile2a
./var/www/monsite/cache/rep1
./var/www/monsite/cache/rep1/index.php
./var/www/monsite/cache/rep1/otherfile1a

$ find ./var/www/monsite/cache '!' -name 'index.php' -delete
find: impossible de supprimer « ./var/www/monsite/cache/rep1 »: Le dossier n'est pas vide
find: impossible de supprimer « ./var/www/monsite/cache »: Le dossier n'est pas vide

$ find ./var/www/monsite/cache
./var/www/monsite/cache
./var/www/monsite/cache/rep1
./var/www/monsite/cache/rep1/index.php
Avatar
Belaïd
--001a1140a95e23c4cb05339cf192
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

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 lig nes
où chaque champ (le séparateur de champ par défaut est un es pace)
correspond aux: droits du fichier, le propriétaire, groupe ... et enfi n 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; done
>
> 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; do ne
>
> Fait une sauvegarde avant pour mon bien :-)
>
> Cordialement
> Stéphane
>
> Le 24 mai 2016 à 12:08, Hugues MORIN a écr it :
>> Bonjour a tous
>>
>>
>>
>> J'ai besoin de supprimer tout le contenu d'un repertoire SAUF le fichi er
>> 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 dossi er
>> "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 >

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

<div dir="ltr"><div><div>Bonsoir,<br></div>est-tu sur de ta commande: for i in $(ls -l /var/www/monsite/cache | grep -v &#39;index); ? <br></div>car la commande: ls -l | grep -v &#39;index&#39; donne comme résultats de s lignes où chaque champ (le séparateur de champ par défaut est un espace) correspond aux: droits du fichier, le propriétaire, gro upe ... et enfin le nom du fichier. Donc avec la commande rm -rf $i , $i pr endra comme valeur chaque champs de cette ligne (propriétaire du fichi er, groupe, ...).<br></div><div class="gmail_extra"><br><div class="gma il_quote">Le 24 mai 2016 à 12:24, VieuxGeek DuSystem <span dir="ltr" >&lt;<a href="mailto:" target="_blank"> mail.com</a>&gt;</span> a écrit :<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">En faite je me suis un peu trompé :-)<br>
<br>
cd /var/www/monsite/cache<br>
for i in $(ls -l /var/www/monsite/cache | grep -v &#39;index&#39;); do echo $i; done<br>
<br>
Et si tu as bien tous les fichiers listés sauf index, y a plus qu&#39; a rm<br>
<br>
cd /var/www/monsite/cache<br>
for i in $(ls -l /var/www/monsite/cache | grep -v &#39;index); do rm -rf $i ; done<br>
<br>
C&#39;est mieux :-)<br>
<div class="HOEnZb"><div class="h5"><br>
Le 24 mai 2016 à 12:22, VieuxGeek DuSystem &lt;<a href="mailto:skazi "></a>&gt; a écrit :<br>
&gt; Boujour<br>
&gt;<br>
&gt; Je propose<br>
&gt;<br>
&gt; cd /var/www/monsite/<br>
&gt; for i in $(ls -l /var/www/monsite/ | grep -v &#39;cache&#39;); do echo $i; done<br>
&gt;<br>
&gt; Et si tu as bien tous les fichiers listés sauf cache, y a plus qu &#39;a rm<br>
&gt;<br>
&gt; cd /var/www/monsite/<br>
&gt; for i in $(ls -l /var/www/monsite/ | grep -v &#39;cache&#39;); do rm - rf $i; done<br>
&gt;<br>
&gt; Fait une sauvegarde avant pour mon bien :-)<br>
&gt;<br>
&gt; Cordialement<br>
&gt; Stéphane<br>
&gt;<br>
&gt; Le 24 mai 2016 à 12:08, Hugues MORIN &lt;<a href="mailto:morinh @gmail.com"></a>&gt; a écrit :<br>
&gt;&gt; Bonjour a tous<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; J&#39;ai besoin de supprimer tout le contenu d&#39;un repertoire S AUF le fichier<br>
&gt;&gt; index.php<br>
&gt;&gt;<br>
&gt;&gt; Il me semblai que cela aurai du le faire:<br>
&gt;&gt; find /var/www/monsite/cache ! -name &#39;index.php&#39; -exec rm - rf {} ;<br>
&gt;&gt;<br>
&gt;&gt; mais en pratique cela supprime aussi le repertoire &quot;cache&quo t;<br>
&gt;&gt;<br>
&gt;&gt; La syntaxe me semble correcte mais comment faire pour ecarter le d ossier<br>
&gt;&gt; &quot;cache&quot; de la suppression?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Cette solution n&#39;est peut etre pas la bonne pour ce que je veu x faire.<br>
&gt;&gt; En avez-vous une autre qui fonctionne?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Merci<br>
&gt;&gt;<br>
&gt;&gt; Cordialement<br>
&gt;&gt; Hugues<br>
&gt;&gt;<br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class ="gmail_signature">&lt; Belaid &gt;</div>
</div>

--001a1140a95e23c4cb05339cf192--
Avatar
Francois Lafont
Bonsoir,

On 24/05/2016 12:08, Hugues MORIN wrote:

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?



Sauf erreur bien sûr, je pense que la commande commande ci-dessous fait
exactement ce qui est demandé, sachant tout de même que je suppose ici
que le fichier index.php est à la racine du répertoire
/var/www/monsite/cache/ (ce n'est pas dit explicitement dans le message
mais j'imagine que c'est bien le cas).

find /var/www/monsite/cache/ -mindepth 1 '(' -type d -prune -exec rm -r '{}' '+' ')' -o '(' ! -name 'index.php' -exec rm '{}' '+' ')'

Bon, dans la vraie vie jamais je ne m'amuse à pondre une commande find
comme ça. Dans la vraie vie, je copie index.php dans /tmp/, je fais un
« rm -r » directement de tout le répertoire cache/, puis j'en recrée un
nouveau avec mkdir (éventuellement j'ai noté avant les droits du
répertoire pour les remettre comme ils étaient initialement) puis je
remets le fichier index.php qui se trouve dans /tmp à la racine du
répertoire cache/.

--
François Lafont
Avatar
Stiradens
Le 25/05/2016 00:15, Francois Lafont a écrit :
Bonsoir,

On 24/05/2016 12:08, Hugues MORIN wrote:

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?


Sauf erreur bien sûr, je pense que la commande commande ci-dessous fait
exactement ce qui est demandé, sachant tout de même que je suppose ici
que le fichier index.php est à la racine du répertoire
/var/www/monsite/cache/ (ce n'est pas dit explicitement dans le message
mais j'imagine que c'est bien le cas).

find /var/www/monsite/cache/ -mindepth 1 '(' -type d -prune -exec rm -r '{}' '+' ')' -o '(' ! -name 'index.php' -exec rm '{}' '+' ')'

Bon, dans la vraie vie jamais je ne m'amuse à pondre une commande find
comme ça. Dans la vraie vie, je copie index.php dans /tmp/, je fais un
« rm -r » directement de tout le répertoire cache/, puis j'en recrée un
nouveau avec mkdir (éventuellement j'ai noté avant les droits du
répertoire pour les remettre comme ils étaient initialement) puis je
remets le fichier index.php qui se trouve dans /tmp à la racine du
répertoire cache/.



Ta solution est intéressante car les commandes sont simples. Cela dit
recréer un répertoire je trouve ça étrange. Il suffirai de vider le
répertoire sans le détruire. Cela éviterai de gérer les droits du
répertoire. Qu'en pense-tu François?
Avatar
Ph. Gras
Bonjour,

Sauf erreur bien sûr, je pense que la commande commande ci-dessous fait
exactement ce qui est demandé, sachant tout de même que je suppose ici
que le fichier index.php est à la racine du répertoire
/var/www/monsite/cache/ (ce n'est pas dit explicitement dans le message
mais j'imagine que c'est bien le cas).

find /var/www/monsite/cache/ -mindepth 1 '(' -type d -prune -exec rm -r '{}' '+' ')' -o '(' ! -name 'index.php' -exec rm '{}' '+' ')'

Bon, dans la vraie vie jamais je ne m'amuse à pondre une commande find
comme ça. Dans la vraie vie, je copie index.php dans /tmp/, je fais un
« rm -r » directement de tout le répertoire cache/, puis j'en recrée un
nouveau avec mkdir (éventuellement j'ai noté avant les droits du
répertoire pour les remettre comme ils étaient initialement) puis je
remets le fichier index.php qui se trouve dans /tmp à la racine du
répertoire cache/.



Ta solution est intéressante car les commandes sont simples. Cela dit recréer un répertoire je trouve ça étrange. Il suffirai de vider le répertoire sans le détruire. Cela éviterai de gérer les droits du répertoire. Qu'en pense-tu François?




J'ai le problème inverse : je voudrais supprimer le répertoire sans supprimer les fichiers à l'intérieur :

/var/www/monsite/cache/wordpress => /var/www/monsite/cache

Dans la pratique, j'essayer d'éviter de créer le répertoire cache avant de télécharger wordpress, et je
renomme ensuite wordpress en cache avec mv. Mais ce n'est pas toujours possible.

Merci d'avance,

Ph. Gras=
1 2 3