仅对子目录进行递归chmod的Linux命令

9

我使用 Linux 系统,有一个目录包含许多子目录和其中的项目。我想对所有目录和子目录进行递归 chmod 操作,但不包括这些目录中的任何文件。

chmod -R 777 {folder}

有没有可以添加到chmod命令中的标志,使chmod仅适用于子目录?
5个回答

19

我能想到的是:

find {folder} -type d -print0 | xargs -0 chmod 777

这个不像预期那样工作。它会抛出一个错误,类似于:chmod: missing operand after '777' 但是:find {folder} -type d -print0 -exec chmod 777 {} \; 对我来说是按预期工作的。 - undefined

3
查找 {folder} 目录下的所有子目录,并将它们的权限设置为 777。

2

2

尝试:

在 {folder} 中查找类型为目录的文件,执行命令:chmod 777 {} \;


通常情况下,find | xargs <foo> 比 find -exec <foo> 更有效率,因为 xargs 会批量调用 <foo>,而 find -exec 则会针对每个结果分别调用 <foo>。当然,在某些情况下,你需要为每个结果进行单独的调用。 - Philip Kendall

0
我们还可以运行以下命令以递归方式更改所有文件夹的权限。
sudo chmod 777 -v $(find $PWD -type d)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接