B F*_*ley 8 bash permissions chmod recursive
给定以下目录树:
.
??? d1
? ??? workspace
??? d2
? ??? workspace
??? d3
? ??? workspace
??? d4
? ??? workspace
??? d5
??? workspace
Run Code Online (Sandbox Code Playgroud)
我需要为所有workspace
目录设置权限, 如下所示:
chmod -R 774 d1/工作区
chmod -R 774 d2/工作区
...
如何在一个命令中对所有workspace
目录执行上述操作?我可以运行以下命令:
chmod -R 774 *
但这也改变了父目录的模式,这是不希望的。
Tho*_*mas 17
您可以在顶级目录中使用通配符。
chmod 774 d*/workspace
Run Code Online (Sandbox Code Playgroud)
或者为了使其更具体,您还可以限制通配符,例如d
后跟一个数字。
chmod 774 d[0-9]/workspace
Run Code Online (Sandbox Code Playgroud)
更通用的方法可能是使用find
.
find d* -maxdepth 1 -name workspace -type d -exec chmod 774 "{}" \;
Run Code Online (Sandbox Code Playgroud)
该chmod
命令有一个很好的快捷方式,用于仅在目录上设置可执行位,如下所示:
chmod a+X *
Run Code Online (Sandbox Code Playgroud)
这非常方便,可以使整个目录树可供任何人读取,但不会在任何常规文件上设置可执行位:
chmod -R a+rX *
Run Code Online (Sandbox Code Playgroud)