以前の多くの議論に従って削除を実行しようとしました。検索と削除
しかし、私の試みは他の経験をもたらしました。
find . -type d -name "koko" -exec rm -rf {} \;
指定したフォルダを削除koko
しましたが、誤検出が発生しました
find: ./koko: No such file or directory
私の端末に問題がある可能性があります。
を使用していますが、tcsh
find-delete
に切り替えると正しく機能しません。
スナップショット
答え1
-prune
で提案されたオプションを使用する場合これ答え、エラーメッセージは表示されません。
上記の回答を引用すると、
-prune
削除するディレクトリに使用すると、そのディレクトリ内のファイルを見つけようとしないように find に指示します。
テスト
mkdir koko
cd koko
touch file{1,2}
cd ..
find . -type d -name "koko" -prune -exec rm -rf {} \;
上記のfind
コマンドを実行すると、エラーなしでプロンプトが表示されます。ただし、そのオプションを使用しないと、-prune
上記と同じエラーが発生します。
答え2
問題は、find
選択に一致するディレクトリを見つけてコマンドを実行することです。しかし、find
ディレクトリツリーを介して再帰する自然な作業を実行しようとすると、見つけたディレクトリが消えました!したがって、エラーメッセージが表示されます。
オプションを提供することでこの問題を解決できます--depth
。ディレクトリ自体の前に各ディレクトリの内容を処理します。。マニュアルページには、-delete
上記の理由でこのオプションも暗示されていると記載されています。