在linux中使用xargs和chmod命令更改目录和子目录的权限
我在当前目录中有一个目录列表,以权限代码命名(例如:552、700、777)。我想从目录名称获取代码权限并将其应用于该目录及其包含的所有文件。
我尝试使用 xargs 命令: <代码>查找 . -名称“[0-9][0-9][0-9]”-type d | xargs chmod -R [0-9][0-9][0-9]
此命令的问题是它采用第一个目录并更改所有目录的权限代码。
├── 555
│ └── logs
│ ├── 01.log
│ ├── 02.log
│ ├── 03.log
│ ├── 04.log
│ ├── 05.log
│ ├── 06.log
│ └── 07.log
├── 700
│ └── data
│ └── data1.data
我想要什么:我有 555 目录,所以我想用权限代码 555 更改所有子文件和目录,对于第二个目录,我想用权限代码 700 更改所有子文件和目录
我的命令做什么:它更改所有第一个文件的权限代码为500的其他文件和子目录
i have a list of directories in the current directory named with there permission codes (exemple : 552, 700, 777). I want to get the code permission from the name of directory and apply it to the directory and all the files it contains.
I tried with the xargs command :find . -name "[0-9][0-9][0-9]" -type d | xargs chmod -R [0-9][0-9][0-9]
the problem with this command it takes the first directory and its change the permission code of all directories.
├── 555
│ └── logs
│ ├── 01.log
│ ├── 02.log
│ ├── 03.log
│ ├── 04.log
│ ├── 05.log
│ ├── 06.log
│ └── 07.log
├── 700
│ └── data
│ └── data1.data
what I want : I have the 555 directory so I want to change all sub files and directory with permission code 555 and for the second directory I want to change all the subfiles and directory with the permission code 700
what my command do: it change all other files and subdirectories with the permission code of the first file 500
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试一下
find
与您的相同。sed
是为了从目录名称中删除./
。 Find 返回./700
、./555
、...xargs
与-I
使用{ }
以重用它在命令中接收到的内容。所以它显示“chmod -R
DIRNAME DIRNAME”。所以chmod -R 700 700
等等。xargs chmod -R [0-9][0-9][0-9]
,find 到 xargs 中的 [0-9]。
Try
find
is the same as yours.sed
is added to remove the./
from the directory name. Find returns./700
,./555
, ...xargs
with-I
uses{}
to reuse what it received into the command. So it says "chmod -R
DIRNAME DIRNAME". Sochmod -R 700 700
and so on.xargs chmod -R [0-9][0-9][0-9]
, there is nothing to link the [0-9] in thefind
to the [0-9] inxargs
.没有 xargs
Without xargs
查找:
或 bash 循环:
find:
or a bash loop: