exec で find にセミコロン (;) とプラス記号 (+) を使用する 質問する

exec で find にセミコロン (;) とプラス記号 (+) を使用する 質問する

なぜ出力に違いが出るのか

find . -exec ls '{}' \+

そして

find . -exec ls '{}' \;

私が得たもの:

$ find . -exec ls  \{\} \+
./file1  ./file2

.:
file1  file2  testdir1

./testdir1:
testdir2

./testdir1/testdir2:


$ find . -exec ls  \{\} \;
file1  file2  testdir1
testdir2
./file2
./file1

ベストアンサー1

これは例で説明するのが一番わかりやすいかもしれません。find次のようなファイルが見つかったとします。

file1
file2
file3

-execセミコロン( )と一緒に使用するとfind . -exec ls '{}' \;

ls file1
ls file2
ls file3

ただし、代わりにプラス記号 ( find . -exec ls '{}' \+) を使用すると、可能な限り多くのファイル名が単一のコマンドに引数として渡されます。

ls file1 file2 file3

ファイル名の数は、システムの最大コマンド ライン長によってのみ制限されます。コマンドがこの長さを超えると、コマンドは複数回呼び出されます。

おすすめ記事