我想recursion地chmod一个目录,以便:
如何做得更好,更短,更有爱好者? :)也许,以某种方式使用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它,所以当+和-操作符不需要时,为什么要使用它?