Tout cela est une ligne, mais j'ai divisé ici pour une meilleure lisibilité
find /home
\(-wholename '/home/exception1'
-o -wholename '/home/exception2'
-o -wholename '/home/exception3' \)
-prune -o
-wholename '*/public_html/outdated' -type d
-exec rm -rvf \{} \;
Avant d'exécuter ce que je fortement suggère de remplacer le bit -exec rm -rvf \{} \;
par -print
pour vérifier qu'il n'imprime que ce que vous voulez supprimer.
Voici comment cela fonctionne: find
trouve récursivement des choses. les choses dans \(
... \)' matches directories you want to skip entirely (ie: prune). The standard pattern for using
-prune is to say what you want to prune out, then
-prune -o`, et ensuite les choses que vous voulez réellement faire correspondre.
Nous voulons faire correspondre public_html/outdated
répertoires, c'est ce que -wholename '*/public_html/outdated' -type d
est pour. (-type d
signifie "est un répertoire").
Enfin vient l'action que nous voulons effectuer. Une fois de plus, remplacez cette partie par -print
jusqu'à ce que vous soyez sûr de faire ce que vous voulez.
Une mise en garde: Cela cracher un tas d'avertissements de la forme:
find: `/home/foo/public_html/outdated': No such file or directory
C'est parce que trouver essaie de marcher dans ces répertoires juste supprimé. Vous pouvez les ignorer en toute sécurité - la recherche se poursuivra malgré les avertissements.
Vous avez probablement ne pas l'intention d'avoir une barre oblique initiale sur 'public_html/jour /' –
Vous avez raison, je vous remercie @Dennis Williamson je l'ai corrigé. – filip