Anonyme68 a écrit
-exec rm -r {} \;
=
-delete
Juste pour info (parce que j’ai déjà fait l’erreur en allant trop vite), il faut faire super gaffe avec -delete de bien le placer à la
fin (action)
find /home/sub0 -name "file" -delete
et pas
avant (expression),
find /home/sub0 -delete -name "file"
sinon il va essayer de virer tout ce qu’il y a à partir du point qui lui est donné sans avertissement ( = find /home/sub0 -delete)
Et -exec rm {} \; et -delete ne sont pas tout à fait équivalentes, si on veut chipoter (ça peut parfois avoir son importance et j’aime bien chipoter/apprendre des trucs avec bash et find). En plus de l’appel à rm,
-exec rm -f {} \;
va renvoyer 0 s’il ne peut pas supprimer un fichier (pb de droits par exemple), car l'
action exec réussie.
-delete
va renvoyer 1, car l'
action delete échoue, mais il aura bien supprimé les fichiers qu’il peut supprimer.
Et, à moins d’avoir un très vieux find, remplacez « {} \; » par « + »
-exec rm -r {} +
qui execute rm -f file1 file2 file 3 et non rm -f file 1 ; rm -f file2 ; rm -f file3