Re: Supprimer le contenu d'un repertoire SAUF un fichier particulier
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
Reply to: