【发布时间】:2010-10-12 07:30:21
【问题描述】:
谁能给我一个递归命令,它将遍历一个目录并使所有普通文件的权限为 644 和所有子目录的权限为 755?
每次我必须在主机上安装某些东西时,我真的厌倦了手动执行此操作。我不知道足够的 BASH(Shell?)命令来执行此操作。
【问题讨论】:
标签: bash shell command-line
谁能给我一个递归命令,它将遍历一个目录并使所有普通文件的权限为 644 和所有子目录的权限为 755?
每次我必须在主机上安装某些东西时,我真的厌倦了手动执行此操作。我不知道足够的 BASH(Shell?)命令来执行此操作。
【问题讨论】:
标签: bash shell command-line
第一行更改文件权限,第二行更改活动目录及其子目录中的目录权限。
find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755
【讨论】:
-print0 和 -0 业务之前。人们总是建议这样做,我知道为什么,但这让我很恼火。
有 X 选项。
chmod a+X * -R
这将只为目录提供执行位,而不是文件。要使用一个命令分别设置 644、755,请使用:
chmod a=rX,u+w <files/dirs> -R
【讨论】:
使用符号模式名称而不是原始数字权限:
chmod -R u=rwX,go=rX somedir
X 权限标志仅将目录或已经可执行的文件设置为可执行文件,-R 标志表示“递归”并将权限应用于somedir 的所有内容。
【讨论】:
不,没有递归更改权限的命令。如果有这样的命令,那就违背了 Unix 的口号:Do One Thing And Do It Well。
但是,有两个命令:一个用于递归(find),一个用于更改权限(chmod)。
所以,神奇的命令行是:
find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +
【讨论】: