1. ホーム
  2. find

[解決済み] セミコロン(;)とプラス(+)をfindのexecで使い分ける

2022-04-22 22:45:09

質問

を使用した場合、出力に差が出るのはなぜですか?

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

解決方法は?

これは、例で説明するのが一番わかりやすいかもしれません。例えば、次のようにします。 find は、以下のようなファイルを表示します。

file1
file2
file3


使用方法 -exec とセミコロン( find . -exec ls '{}' \; を実行します。

ls file1
ls file2
ls file3

しかし、代わりにプラス記号を使用すると ( find . -exec ls '{}' \+ というように、できるだけ多くのファイル名が1つのコマンドの引数として渡されます。

ls file1 file2 file3

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