次のような find コマンドを見たことがありますが、それらの違いが何なのか疑問に思っています。
find . -exec COMMAND {} \;
find . -exec COMMAND {} \+
find . -exec COMMAND {} +
答え1
find exec には 2 つの構文があります。
find . -exec [cmd] {} \;
{}はfindによって見つかった結果のプレースホルダーです
; 見つかった結果ごとに、見つかった結果を使用してコマンド cmd が 1 回実行されることを示します。
次のように実行されます: cmd result1; cmd result2; ...; cmd result N
find . -exec [cmd] {} \+
{}はfindによって見つかった結果のプレースホルダーです
+ 見つかったすべての結果に対して、見つかったすべての結果を使用してコマンド cmd が実行されることを示します。
次のように実行されます: cmd result1 result2 ... result N
+以外でfind exec;を使うべき時
-exec で実行されるツールは、引数として複数のファイルを受け入れません。
一度に多数のファイルに対してツールを実行すると、メモリが大量に消費される可能性があります。
すべての結果を得るには時間がかかりますが、できるだけ早く結果を得たいと思っています。