示例命令:
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
或者
ls file1; ls file2; ls file3
而使用-exec \+
(find . -exec ls '{}' \+
),会尽可能多的文件名作为参数传递给一个命令:
ls file1 file2 file3
注意:文件名的数量仅受系统最大命令行长度的限制。如果命令超过此长度,该命令将被多次调用。\;
为find
找到的每个文件执行单独的命令,而\+
附加文件,并在所有文件上执行单个命令。\
是一个转义字符.