更改文件和目录(不包括一个目录)的权限

更改文件和目录(不包括一个目录)的权限

我正在尝试更改文件和目录的权限,但不包括一个目录。我得到的结果是:

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 {} +

解释:

  1. -name test -prune: -prune,如果之前的测试为真,并且当前文件是目录,则跳过它,否则返回 false。
  2. -o -type d -exec chmod 700 {} \;:如果-prune返回 false,则应用这些选项(按原样或),并且如果文件是目录则-o适用。chmod 700
  3. -o -type f -execdir chmod 600 {} +:如果上述两个测试都返回 false,则应用它,chmod 600因为它不是目录。execdir根据手册页,并给出了理由。

相关内容