![更改文件和目录(不包括一个目录)的权限](https://linux22.com/image/862451/%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E5%92%8C%E7%9B%AE%E5%BD%95%EF%BC%88%E4%B8%8D%E5%8C%85%E6%8B%AC%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95%EF%BC%89%E7%9A%84%E6%9D%83%E9%99%90.png)
我正在尝试更改文件和目录的权限,但不包括一个目录。我得到的结果是:
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
根据手册页,并给出了理由。