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.