在應聘一些AWS的文檔,我注意到下面的命令:UNIX找到「+」字符結尾命令
find /var/www -type d -exec sudo chmod 2775 {} +
我熟悉的\;結束於查找字符串中的exec,但從未見過'+'。任何人都可以對此有所瞭解嗎?
這裏的原始頁面:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html
謝謝!
在應聘一些AWS的文檔,我注意到下面的命令:UNIX找到「+」字符結尾命令
find /var/www -type d -exec sudo chmod 2775 {} +
我熟悉的\;結束於查找字符串中的exec,但從未見過'+'。任何人都可以對此有所瞭解嗎?
這裏的原始頁面:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html
謝謝!
如果您使用加號(+
)而不是轉義分號,參數將在傳遞給該命令之前分組在一起。例如:
$ find . -type f -exec echo {} +
. ./bar.txt ./foo.txt
在這種情況下,只有一個子進程(echo . ./bar.txt ./foo.txt
)被創建這是更爲有效的,因爲它避免了爲每個單獨的參數叉子/ EXEC。
使用轉義的分號,您將得到爲每個參數創建的子進程。
$ find . -type f -exec echo {} \;
.
./bar.txt
./foo.txt
非常好!謝謝 - 這也解釋了爲什麼找到返回大量參數的命令有時無法使用'+' - 例如'找。 -name「*」-exec chmod 700 {} +'(chmod抱怨太長的命令行) – mistertee
你可以把它看作將'find'作爲參數的所有結果放在'chmod'中。所以它的速度比使用';' – devnull
更多見'man find' – devnull