我正在尝试更改文件和目录的权限,但不包括一个目录。我得到的结果是:
find ! -name test -exec chmod -R 700 {} \;
测试是我需要排除的目录,而其他文件和目录需要 700 权限访问。
答案1
要忽略目录,你应该使用-prune
。考虑这样的事情:
find . -name test -prune -o -type d -exec chmod 700 {} \; -o -type f -execdir chmod 600 {} +
解释:
-name test -prune
:-prune
,如果之前的测试为真,并且当前文件是目录,则跳过它,否则返回 false。-o -type d -exec chmod 700 {} \;
:如果-prune
返回 false,则应用这些选项(按原样或),并且如果文件是目录则-o
适用。chmod 700
-o -type f -execdir chmod 600 {} +
:如果上述两个测试都返回 false,则应用它,chmod 600
因为它不是目录。execdir
根据手册页,并给出了理由。