tl;dr - Übergeben Sie -prune wenn Sie Verzeichnisse mit find löschen .
Für alle anderen, die über diese Frage stolpern. Ein Beispiel wie dieses ausführen
find /media/disk3 -type d -name .AppleDouble -exec rm -rf {} \;
führt zu einem Fehler wie
rm: cannot remove 'non_existent_directory': No such file or directory
Beim Suchen und Löschen von Verzeichnissen mit find tritt dieser Fehler häufig auf, weil find speichert das Verzeichnis, um Unterverzeichnisse zu verarbeiten, und löscht es dann mit exec , versucht dann, die nicht mehr existierenden Unterverzeichnisse zu durchlaufen.
Sie können entweder -maxdepth 0 übergeben oder -prune um dieses Problem zu verhindern. So:
find /media/disk3 -type d -name .AppleDouble -prune -exec rm -rf {} \;
Jetzt löscht es die Verzeichnisse ohne Fehler. Hurra! :)
Sie müssen DOT in Shell Glob nicht entkommen, da dies keine Regex ist. Verwenden Sie also .AppleDouble statt \.AppleDouble :
find $DIRTY_DIR -name .AppleDouble -exec rm -rf '{}' \;
PS: Ich sehe nirgendwo $COUNTER in Ihrem Skript inkrementiert wird.