[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: