我怎样才能仅对目录执行递归 chmod?

我怎样才能仅对目录执行递归 chmod?

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

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

我怎样才能只影响目录?

答案1

运行(find-type d目录)使用-exec主函数对文件夹执行chmodonly 操作:

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

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

答案2

命令行示例 - chmod在维基百科中。

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

正如丹尼尔所补充道:这应该对你的情况有用:

chmod -R o+X directory

答案3

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

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

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"

相关内容