本文主要介绍Linux中,使用find命令时,使用-exec参数时,其中\+和\;参数的区别,以及相关示例。

示例命令:

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找到的每个文件执行单独的命令,而\+附加文件,并在所有文件上执行单个命令。\是一个转义字符.