如何 chmod/chown 特定的文件列表?

jos*_*erk 43 unix command-line

我想编写一个 .sh 脚本来设置一些文件夹权限,但想知道我是否可以运行以下内容:

chown -644 ./one;/two;/three
Run Code Online (Sandbox Code Playgroud)

chown 文件夹列表,而不是多次调用 chown。

此外,是否有办法 chown 文件列表,并排除其他一些文件,例如:

chown -R -664 ./*;!./cache
Run Code Online (Sandbox Code Playgroud)

我希望我的伪命令行有意义。

Den*_*nis 54

几乎所有 Unix 工具都接受文件列表作为非选项参数。像往常一样,不同的参数必须用空格分隔:

chmod 644 one two three
Run Code Online (Sandbox Code Playgroud)

在你的第二个例子中,如果你使用 Bash,一个简单的

chmod -R 644 !(cache)
Run Code Online (Sandbox Code Playgroud)

就足够了。

这种方法需要扩展模式匹配。如果它被禁用,你可以启用它

shopt -s extglob
Run Code Online (Sandbox Code Playgroud)

请参阅:Bash 参考手册 # 模式匹配