小编典典

在查找中使用分号 (;) 与加号 (+) 和 exec

all

为什么使用之间的输出有差异

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

阅读 62

收藏
2022-07-07

共1个答案

小编典典

最好用一个例子来说明这一点。假设find打开了这些文件:

file1
file2
file3

-exec与分号 ( ) 一起使用find . -exec ls '{}' \;,将执行

ls file1
ls file2
ls file3

但是,如果您使用加号 ( find . -exec ls '{}' \+),则尽可能多的文件名作为参数传递给单个命令:

ls file1 file2 file3

文件名的数量仅受系统最大命令行长度的限制。如果命令超过这个长度,该命令将被多次调用。

2022-07-07