首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中使用xargs和chmod命令更改目录和子目录的权限

在linux中使用xargs和chmod命令更改目录和子目录的权限
EN

Stack Overflow用户
提问于 2022-02-23 18:04:33
回答 3查看 635关注 0票数 0

我在当前目录中有一个目录列表,其中使用了权限代码(例如: 552,700,777)。我希望从目录名获得代码权限,并将其应用于目录和它包含的所有文件。

我尝试使用xargs命令:find . -name "[0-9][0-9][0-9]" -type d | xargs chmod -R [0-9][0-9][0-9]

该命令的问题在于它接受了第一个目录,并更改了所有目录的权限代码。

代码语言:javascript
复制
├── 555
│   └── logs
│       ├── 01.log
│       ├── 02.log
│       ├── 03.log
│       ├── 04.log
│       ├── 05.log
│       ├── 06.log
│       └── 07.log
├── 700
│   └── data
│       └── data1.data

我想要的是:我有555目录,所以我想用权限代码555更改所有子文件和目录,对于第二个目录,我想用权限代码700更改所有的子文件和目录。

我的命令:它使用第一个文件500的权限代码更改所有其他文件和子目录。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-23 19:14:05

试一试

代码语言:javascript
复制
find . -name "[0-9][0-9][0-9]" -type d  | sed 's#\./\(.*\)#\1#' | xargs -I{} chmod -R {} {}

  • find与您的find相同。添加
  • sed以从目录名中删除./。Find返回./700./555、带有-I-I,使用{}将收到的内容重用到命令中。上面写着"chmod -R DIRNAME DIRNAME“。在您的尝试中,xargs.

  • ,没有什么可以将find中的0-9链接到0-9在find中。
票数 0
EN

Stack Overflow用户

发布于 2022-02-23 19:29:20

无沙格

代码语言:javascript
复制
find . -type d -regextype sed -regex ".*/[0-9]\{3\}$"| awk -F"/" '{print "chmod -R " $NF,$0}'|sh
票数 0
EN

Stack Overflow用户

发布于 2022-02-23 23:37:06

查找:

代码语言:javascript
复制
find . -type d -name '[0-7][0-7][0-7]' \
-exec sh -c 'for i do chmod -R "${i##*/}" "$i"; done' _ {} +

或者是bash循环:

代码语言:javascript
复制
shopt -s globstar

for i in **/[0-7][0-7][0-7]/; do
    i=${i%/}
    chmod -R "${i##*/}" "$i"; done
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71242008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档