是否有一个shell命令以递归方式授予目录和文件权限?

时间:2009-03-09 22:27:29

标签: bash shell command-line

有人可以给我一个递归命令,它将通过一个目录并使所有正常文件权限644和所有子目录755?

每次我必须在主机上安装东西时,我真的厌倦了这样做。我不知道BASH(Shell?)命令执行此操作。

4 个答案:

答案 0 :(得分:15)

有X选项。

chmod a+X * -R

这将只为目录而不是文件提供执行位。要使用一个命令分别设置644,755,请使用:

chmod a=rX,u+w <files/dirs> -R

答案 1 :(得分:12)

第一行更改文件权限,第二行更改活动目录及其子目录中的目录权限。

find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755

答案 2 :(得分:3)

使用符号模式名称而不是原始数字权限:

chmod -R u=rwX,go=rX somedir

X权限标志仅将目录或已执行文件设置为可执行文件,-R标志表示“递归”,并将权限应用于somedir的所有内容。

答案 3 :(得分:2)

不,没有命令以递归方式更改权限。如果有这样一个命令,那就违反了Unix的口头禅:做一件事并做得好。

但是,有两个命令:一个用于递归(find),另一个用于更改权限(chmod)。

所以,魔术命令行是:

find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +