Find
linux shell:在 find -exec 中找到 -exec
我想對
chmod 555
使用以下命令獲得的所有文件和目錄執行(它返回目錄 test 以及其中的所有文件和目錄):find ~/.config/google-chrome -type d -name test -exec find {} \;
在這種情況下,您可以
chmod -R
按照user26112 的回答使用,但在一般情況下,您可以這樣做:find ~/.config/google-chrome -type d -name test -exec sh -c ' for i do find "$i" -exec chmod 555 {\} + done' sh {} +
訣竅是使用 shell 並使用引用(如
{\}
or{"}"
),以便內部{}
不會被外部擴展(考慮到即使它只是參數的一部分仍然會擴展find
的那些實現)。find``{}
GNU
find
4.9.0 或更高版本還支持從標準輸入獲取要處理的文件列表作為 NUL 分隔記錄,因此您可以執行以下操作:find -files0-from <( find ~/.config/google-chrome -type d -name test -print0 ) -exec chmod 555 {} +
對於舊版本,您可以使用 GNU 執行類似的操作
xargs
並sh
重新排序參數:xargs -r0a <( find ~/.config/google-chrome -type d -name test -print0 ) sh -c 'exec find "$@" -exec chmod 555 {} +' sh
(
<(...)
是程序替換yash
,zsh 和 bash 也支持 ksh 功能,不要與的程序重定向混淆)。