フラグを探してください:-exec rm -rfと-delete

フラグを探してください:-exec rm -rfと-delete

質問で言及したフラグは同じだと思いますが、前者は次のメッセージを受け取りますが、後者では何も受け取りません。

$ find . -mindepth 1 -type d -exec rm -rf {} \;
find: `./practice4': No such file or directory
find: `./practice10': No such file or directory
find: `./practice7': No such file or directory
find: `./practice9': No such file or directory
find: `./practice1': No such file or directory
find: `./practice5': No such file or directory
find: `./practice3': No such file or directory
find: `./practice6': No such file or directory
find: `./practice2': No such file or directory
find: `./practice8': No such file or directory

私の追加の質問は:すべてのサブディレクトリを削除するためのより簡単なコードはありますか?削除の順序はランダムですか?私は次のようにディレクトリを作成します。

$ mkdir practice{1..10}

ベストアンサー1

GNUでマニュアルを探す:

find' command removes directories, you may find that you get a spurious error message whenあなたのfind 'が現在削除されているディレクトリに再帰しようとした場合。 「-depth」オプションを使用すると、通常この問題が解決されます。

その他の問題:

  • コマンドの単純さは状況によって異なり、リストされている場合は次のようになりますrm -rf practice*
  • IIRCでは、ファイルの処理順序はファイルシステムによって異なります。

おすすめ記事