如何仅在目录上执行递归chmod?


31

我想在Centos 4上更改树的权限,以从目录中递归地为所有目录添加执行权限。如果我使用普通的chmod,除目录外的文件也会被修改:

chmod -R o+x /my/path/here

我如何只影响目录?

Answers:


48

在主要目录的目录)上运行find,仅对文件夹执行以下操作:-type d-execchmod

find /your/path/here -type d -exec chmod o+x {} \;

为了确保它仅对所需的对象执行,您可以先运行find /your/path/here -type d;然后运行。它只会简单地打印出找到的目录。


您能否解释一下{} \; 有吗
Srekel '17


17

请参阅命令行示例-Wikipedia中的chmod

chmod -R a-x+X directory    remove the execute permission on all files in 
                            a directory tree, while allowing for directory browsing.

正如丹尼尔(Daniel)所补充:这应该适合您的情况:

chmod -R o+X directory

这将影响目录中文件的当前权限。
scriptmonster 2012年

@scriptmonster在这种情况下,引用的行是错误的,但chmod -R o+X directory应适用于OP。
丹尼尔·贝克

1
对于那些想知道的区别,像我这样的,它是X将适用于执行权限已经有至少一个执行权限的任何文件位已经设置(用户,小组或其他)。在一般情况下,可接受的答案更好。
ixe013 2014年

1
find /home/mydir -type d | xargs chmod ugo+rx

这在CentOS6上有效,而上面的find -exec则不能。基本上,它只是将目录列表通过管道传递给xargs命令,该命令会将它们发送到chmod。然后,chmod在目录上设置通用读取和执行(搜索)。要对家庭中的所有用户执行此操作,请使用sudo:

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.