tl;dr - Passe -prune
si vous supprimez des répertoires en utilisant find
.
Pour toute autre personne qui trébuche sur cette question. Exécution d'un exemple comme celui-ci
find /media/disk3 -type d -name .AppleDouble -exec rm -rf {} \;
génère une erreur telle que
rm: cannot remove 'non_existent_directory': No such file or directory
Lors de la recherche et de la suppression de répertoires avec find, vous rencontrerez souvent cette erreur car find
stocke le répertoire pour traiter les sous-répertoires, puis le supprime avec exec
, puis tente de parcourir les sous-répertoires qui n'existent plus.
Vous pouvez soit passer -maxdepth 0
ou -prune
pour éviter ce problème. Comme ceci :
find /media/disk3 -type d -name .AppleDouble -prune -exec rm -rf {} \;
Maintenant, il supprime les répertoires sans aucune erreur. Hourra! :)
Vous n'avez pas besoin d'échapper DOT dans shell glob car ce n'est pas une regex. Alors utilisez .AppleDouble
au lieu de \.AppleDouble
:
find $DIRTY_DIR -name .AppleDouble -exec rm -rf '{}' \;
PS : Je ne vois nulle part $COUNTER
étant incrémenté dans votre script.