【linux】find -exec rm で「そのようなファイルやディレクトリはありません」とは?
問題
あるディレクトリの配下を定期的に掃除するために、以下のようなコマンドを実行しているのですが、「そのようなファイルやディレクトリはありません」のエラーが発生します。
find /var/log/hoge -type d -exec rmdir {} \;
答え
ディレクトリを削除すると、findがさらにその子ディレクトリがないか見ようとしたときに「無い!」ということで、エラーメッセージが出るらしい。
こんなディレクトリがあるとして、
$ find . -type d . ./fff ./fff/x ./fff/x/z ./fff/x/y ./eee ./ddd ./aaa ./aaa/bbb ./aaa/ccc
以下のように文句を言われ、
$ find . -type d -exec rmdir {} \;
rmdir: failed to remove `.': 無効な引数です
rmdir: failed to remove `./fff': ディレクトリは空ではありません
rmdir: failed to remove `./fff/x': ディレクトリは空ではありません
find: `./fff/x/z': そのようなファイルやディレクトリはありません
find: `./fff/x/y': そのようなファイルやディレクトリはありません
find: `./eee': そのようなファイルやディレクトリはありません
find: `./ddd': そのようなファイルやディレクトリはありません
rmdir: failed to remove `./aaa': ディレクトリは空ではありません
find: `./aaa/bbb': そのようなファイルやディレクトリはありません
find: `./aaa/ccc': そのようなファイルやディレクトリはありません
でも空のディレクトリの削除は成功している。
$ find . -type d . ./fff ./fff/x ./aaa