2014-03-24 140 views
2

在應聘一些AWS的文檔,我注意到下面的命令:UNIX找到「+」字符結尾命令

find /var/www -type d -exec sudo chmod 2775 {} + 

我熟悉的\;結束於查找字符串中的exec,但從未見過'+'。任何人都可以對此有所瞭解嗎?

這裏的原始頁面:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

謝謝!

+0

你可以把它看作將'find'作爲參數的所有結果放在'chmod'中。所以它的速度比使用';' – devnull

+0

更多見'man find' – devnull

回答

3

如果您使用加號(+)而不是轉義分號,參數將在傳遞給該命令之前分組在一起。例如:

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

在這種情況下,只有一個子進程(echo . ./bar.txt ./foo.txt)被創建這是更爲有效的,因爲它避免了爲每個單獨的參數叉子/ EXEC。

使用轉義的分號,您將得到爲每個參數創建的子進程。

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

非常好!謝謝 - 這也解釋了爲什麼找到返回大量參數的命令有時無法使用'+' - 例如'找。 -name「*」-exec chmod 700 {} +'(chmod抱怨太長的命令行) – mistertee