ベストアンサー1
からman find
:
-exec command {} +
この
-exec
アクションのバリエーションは、選択したファイルに対して指定されたコマンドを実行しますが、コマンドラインは選択した各ファイル名を最後に追加することによって構成されます。コマンドの総呼び出し数は、一致するファイルの数よりはるかに少なくなります。コマンドラインは、xargsがコマンドラインを作成するのとほぼ同じ方法で作成されます。{}
このインスタンスはコマンドに 1 つだけ許可されます。このコマンドは起動ディレクトリで実行されます。
たとえばfind -exec touch -t 201007162310.00 {} +
、find
なしでコマンドを実行すると、-exec
ファイル1.txt
と2.txt
実行3.txt
されます。
touch -t 201007162310.00 1.txt
touch -t 201007162310.00 2.txt
touch -t 201007162310.00 3.txt
と-exec ... {} \;
、
touch -t 201007162310.00 1.txt 2.txt 3.txt
そして-exec ... {} +
。
後者のバージョンは、必要な新しいプロセス数がはるかに少ないため、より高速ですが移植性が低下します(一部のfind
実装ではサポートされていません)。もちろん、試行中のコマンドが-exec
複数のファイルを引数として受け取ることをサポートしていない場合は機能しません。