tl;dr – Předejte -prune
pokud odstraňujete adresáře pomocí find
.
Pro každého, kdo na tuto otázku narazí. Spuštění příkladu jako je tento
find /media/disk3 -type d -name .AppleDouble -exec rm -rf {} \;
výsledkem je chyba jako
rm: cannot remove 'non_existent_directory': No such file or directory
Při hledání a mazání adresářů pomocí funkce find se často setkáte s touto chybou, protože find
uloží adresář do procesních podadresářů a poté jej smaže pomocí exec
, pak se pokusí procházet podadresáře, které již neexistují.
Můžete buď předat -maxdepth 0
nebo -prune
abyste tomuto problému zabránili. Asi takhle:
find /media/disk3 -type d -name .AppleDouble -prune -exec rm -rf {} \;
Nyní smaže adresáře bez chyb. Hurá! :)
V shell glob nemusíte escapovat DOT, protože to není regex. Použijte tedy .AppleDouble
místo \.AppleDouble
:
find $DIRTY_DIR -name .AppleDouble -exec rm -rf '{}' \;
PS: Nikde nevidím $COUNTER
ve vašem skriptu.