findコマンドの「+」は何をしますか?

findコマンドの「+」は何をしますか?

.+find

はいだから投稿は-

find . -exec touch -t 201007162310.00 {} +

これの目的を理解するのに役立ちます。

ベストアンサー1

からman find

-exec command {} +

この-execアクションのバリエーションは、選択したファイルに対して指定されたコマンドを実行しますが、コマンドラインは選択した各ファイル名を最後に追加することによって構成されます。コマンドの総呼び出し数は、一致するファイルの数よりはるかに少なくなります。コマンドラインは、xargsがコマンドラインを作成するのとほぼ同じ方法で作成されます。{}このインスタンスはコマンドに 1 つだけ許可されます。このコマンドは起動ディレクトリで実行されます。

たとえばfind -exec touch -t 201007162310.00 {} +findなしでコマンドを実行すると、-execファイル1.txt2.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複数のファイルを引数として受け取ることをサポートしていない場合は機能しません。

おすすめ記事