当前位置:  开发笔记 > 编程语言 > 正文

为什么chmod上的递归模式会做除递归之外的所有事情?

如何解决《为什么chmod上的递归模式会做除递归之外的所有事情?》经验,为你挑选了3个好方法。

chmod -R 775 *.cgi只更改当前目录中文件的权限,子目录中的文件根本不会被修改.这与简单的功能完全相同chmod 775 *.cgi.我见过人们使用诸如with find和what之类的解决方案.好的,但为什么-R模式甚至存在,如果它甚至没有完成任何事情?



1> msw..:

可能是因为您没有命名的目录*.cgi.答曰手册:

-R递归更改文件模式位.对于命名目录的每个文件操作数,chmod应更改目录的文件模式位以及其下的文件层次结构中的所有文件.

例如:

$ ls -R
.:
a  a.c  b.c  c.c

./a:
a.c  b.c  sub

./a/sub:
a.c  b.c  
$ chmod -R 444 *.c
$ ls -l
drwxr-xr-x 3 msw msw 4096 2010-08-12 18:07 a
-r--r--r-- 1 msw msw    0 2010-08-12 18:07 a.c
-r--r--r-- 1 msw msw    0 2010-08-12 18:07 b.c
-r--r--r-- 1 msw msw    0 2010-08-12 18:07 c.c
$ : directory a not affected
$ chmod -R u-w a    
$ ls -l a
-r-xr-xr-x 1 msw msw    0 2010-08-12 18:07 a.c
-r-xr-xr-x 1 msw msw    0 2010-08-12 18:07 b.c
dr-xr-xr-x 3 msw msw 4096 2010-08-12 18:07 sub
$ ls -l a/sub
-r-xr-xr-x 1 msw msw    0 2010-08-12 18:07 a.c
-r-xr-xr-x 1 msw msw    0 2010-08-12 18:07 b.c
$ : got em



2> Matthew Slat..:

-R告诉chmod你进入任何作为参数给出的目录.

如果你说chmod -R 775 *.cgi,shell将扩展*.cgi为与该模式匹配的文件列表,并将其作为参数列表传递 - 因此chmod不会要求查看任何其他目录.

(这递归到任何目录相匹配*.cgi...)



3> dmckee..:

要完成你想要的尝试

find . -name '*.cgi' -print0 | xargs -0 chmod 755

这里find生成一个.cgi包含当前目录向下结尾的所有文件的列表,并将该列表传递给xargs适用chmod于每个文件的列表.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有