unix find命令以'+';性格

unix find命令以'+';性格,unix,command-line,find,Unix,Command Line,Find,在阅读一些AWS文档时,我注意到以下命令: find /var/www -type d -exec sudo chmod 2775 {} + 我对这本书很熟悉;在查找字符串中结束为exec,但从未见过“+”。有人能解释一下吗 这是原始页面: 谢谢 如果使用加号(+)而不是转义分号,则参数将在传递给命令之前分组在一起。例如: $ find . -type f -exec echo {} + . ./bar.txt ./foo.txt 在这种情况下,只创建了一个子进程(echo../bar.t

在阅读一些AWS文档时,我注意到以下命令:

find /var/www -type d -exec sudo chmod 2775 {} +
我对这本书很熟悉;在查找字符串中结束为exec,但从未见过“+”。有人能解释一下吗

这是原始页面:

谢谢

如果使用加号(
+
)而不是转义分号,则参数将在传递给命令之前分组在一起。例如:

$ find . -type f -exec echo {} +
. ./bar.txt ./foo.txt 
在这种情况下,只创建了一个子进程(
echo../bar.txt./foo.txt
),效率更高,因为它避免了为每个参数创建fork/exec

$ find . -type f -exec echo {} \;
. 
./bar.txt
./foo.txt 
使用转义分号,将为每个参数创建一个子进程

$ find . -type f -exec echo {} \;
. 
./bar.txt
./foo.txt 

您可以将其视为一次性将
find
的所有结果作为
chmod
的参数。所以它比使用
更快有关更多信息,请参见
man find
,非常好!谢谢-这也解释了为什么返回大量参数的find命令有时不能与“+”一起使用-例如
find-名称“*”-exec chmod 700{}+
(chmod抱怨命令行太长)