tl;dr - -prune
を渡す find
を使用してディレクトリを削除する場合 .
この質問につまずいた人のために。このような例を実行します
find /media/disk3 -type d -name .AppleDouble -exec rm -rf {} \;
のようなエラーになります
rm: cannot remove 'non_existent_directory': No such file or directory
find
のため、find でディレクトリを検索して削除するときに、このエラーが発生することがよくあります。 ディレクトリを保存してサブディレクトリを処理し、exec
で削除します 、次に存在しないサブディレクトリをトラバースしようとします。
-maxdepth 0
を渡すことができます または -prune
この問題を防ぐために。そのように:
find /media/disk3 -type d -name .AppleDouble -prune -exec rm -rf {} \;
これで、エラーなしでディレクトリが削除されます。万歳! :)
これは正規表現ではないため、シェル グロブで DOT をエスケープする必要はありません。 .AppleDouble
を使用してください \.AppleDouble
の代わりに :
find $DIRTY_DIR -name .AppleDouble -exec rm -rf '{}' \;
追伸: どこにも見えない $COUNTER
スクリプトでインクリメントされます。