正确的recursionchmod,分别用于文件和目录

我想recursion地chmod一个目录,以便:

  • 文件是0664
  • 目录是0775

如何做得更好,更短,更有爱好者? :)也许,以某种方式使用umask?

所有find解决scheme太长:我总是以复制粘贴结束:)

根据你的chmod版本,你可以这样做:

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

请注意大写字母X.它将已设置任何执行位的目录和文件设置为可执行位。

请注意,您只能使用大写字母“+”,而不是“=”或“ – ”。

更好,更短,比什么?

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

添加一个oneliner的混合

 find -type f -exec chmod 0644 {} + -o -type d -exec chmod 0755 {} + 
 find /dir -type f -print0 |xargs -0 chmod 0644 find /dir -type d -print0 |xargs -0 chmod 0775 

在真实环境中使用前进行testing

我正在使用这个从FAT文件系统复制的任何东西:

 chmod -R a-x+X . 

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

 gchmod -R a-x+X . 

不知道为什么要这样做,人们倾向于使用的最常见的原因是:

  • 文件和目录是可写的

    chmod -R ow /path/to/dir

  • 文件和目录不是组可写的

    chmod -R g+w /path/to/dir

或者,结合两者:

 chmod -R ow,g+w /path/to/dir 

或者,如果您希望默认文件和目录具有正确的权限,请修改创build进程的umask

基本上,在chmod使用数字模式是正确的; 通常情况下,目录已经设置了可执行位,不需要文件的文件缺less它,所以当+-操作符不需要时,为什么要使用它?