![正确的递归 chmod,分别针对文件和目录](https://linux22.com/image/583445/%E6%AD%A3%E7%A1%AE%E7%9A%84%E9%80%92%E5%BD%92%20chmod%EF%BC%8C%E5%88%86%E5%88%AB%E9%92%88%E5%AF%B9%E6%96%87%E4%BB%B6%E5%92%8C%E7%9B%AE%E5%BD%95.png)
我想以递归方式 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 .