正确的递归 chmod,分别针对文件和目录

正确的递归 chmod,分别针对文件和目录

我想以递归方式 chmod 一个目录以便:

  • 文件为 0664
  • 目录是 0775

如何做得更好、更短、更漂亮?:) 也许,以某种方式使用 umask?

所有find解决方案都太长了:我总是以复制粘贴结束:)

答案1

根据您的 chmod 版本,您可能可以执行以下操作:

chmod -R . ug+rwX,o+rX,o-w

注意首都X. 这将在已经设置了执行位的目录和文件上设置可执行位。

请注意,大写 X 只能与“+”一起使用,而不能与“=”或“-”一起使用。

答案2

比什么更好、更短、更漂亮?

cd /directory
find . -type d -exec chmod 0755 {} +
find . -type f -exec chmod 0664 {} +

答案3

添加一句话

find -type f -exec chmod 0644 {} + -o -type d -exec chmod 0755 {} +

答案4

我使用它来处理从 FAT 文件系统复制的所有内容:

chmod -R a-x+X .

如果它不起作用,例如在 Mac OS X 上,请尝试该命令的 GNU 版本chmod

gchmod -R a-x+X .

相关内容