我在 AIX 中有以下目录结构。
codeRepo/REPO1/AREA1/objects
codeRepo/REPO1/AREA2/SUBAREA1/objects
codeRepo/REPO1/AREA2/SUBAREA2/objects
从 codeRepo 我想在树中的chown myUser *
每个目录上运行。objects
正如您所看到的,不同的位置有不同的对象目录。
答案1
如果您只想 chown 目录(而不是子文件),请使用find -exec
,如下所示:
find -type d -name objects -exec chown myUser {} \;
执行此操作:
-type d
仅选择目录仅
-name objects
查找名称完全为“对象”的目录, 对找到的每个路径-exec chown myUser {} \;
执行chown myUser {}
(用路径替换 {})
如果您还想删除chown
里面的所有文件,只需替换chown
为chown -R
.
答案2
你几乎回答了你自己的问题..答案是使用递归选项 -R
运行命令sudo chown -R richie codeRepo/(假设您的用户名是 richie)
这将递归地将每个文件/文件夹设置为您作为所有者,但这样做;尽可能远的树,所以更多的是大锤方法。
答案3
使用bash
选项globstar
可遍历任意深度**
。
当codeRepo
:
shopt -s globstar
chown myUser REPO1/AREA*/**/objects
AREA
为了精确起见,如果名称后面只有一位数字(字符) ,则使用?
来表示单个字符:
chown myUser REPO1/AREA?/**/objects
同样,对于两个字符:
chown myUser REPO1/AREA??/**/objects