xargs
すべての魔法を行います:
find . -name test -type d -print0|xargs -0 rm -r --
xargs
stdin に渡された引数を使用して、パラメーターとして渡されたコマンドを実行します。
これは rm -r
を使用しています ディレクトリとそのすべての子を削除します。
--
-
で始まるパスを避けるために、引数の終わりを示します 引数として扱われないようにします。
-print0
find
に伝えます \0
を印刷する 改行の代わりの文字;と -0
xargs
に伝えます \0
のみを扱う 引数の区切りとして。
これは rm
を呼び出しています rm
を呼び出すオーバーヘッドを回避して、一度に多くのディレクトリを処理します。 ディレクトリごとに個別に。
代わりに find
選択したごとにコマンドを実行することもできます ファイル:
find . -name test -type d -exec rm -r {} \;
これは rm
を呼び出すため、パフォーマンスが向上します。 一度に複数のディレクトリ :
find . -name test -type d -exec rm -r {} +
(+
に注意してください 最後に;これは xargs
と同等です 解決します。)
find /path/to/dir -name "test" -type d -delete
-
-name: 渡された名前を探します。
-regex
を使用できます 正規表現に基づく名前の提供 -
タイプ: ファイルの種類を探します。
d
ディレクトリのみを検索 -
-削除: 見つかったリストを削除するアクション。
別の方法:
find /path/to/dir -name "test" -type d -exec rm -rf {} \;
J.F.セバスチャン コメントに記載:
+
を使用できます \;
の代わりに 一度に複数のディレクトリを渡すことができます。
これを行うさらに別の方法は
find . -name test -exec rm -R "{}" \;
検索に関する役立つリンク:http://www.softpanorama.info/Tools/Find/using_exec_option_and_xargs_in_find.shtml