【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
コメント