chmod -R 775 *.cgi
只更改当前目录中文件的权限,子目录中的文件根本不会被修改.这与简单的功能完全相同chmod 775 *.cgi
.我见过人们使用诸如with find
和what之类的解决方案.好的,但为什么-R模式甚至存在,如果它甚至没有完成任何事情?
可能是因为您没有命名的目录*.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
-R
告诉chmod
你进入任何作为参数给出的目录.
如果你说chmod -R 775 *.cgi
,shell将扩展*.cgi
为与该模式匹配的文件列表,并将其作为参数列表传递 - 因此chmod
不会要求查看任何其他目录.
(这将递归到任何目录相匹配*.cgi
...)
要完成你想要的尝试
find . -name '*.cgi' -print0 | xargs -0 chmod 755
这里find
生成一个.cgi
包含当前目录向下结尾的所有文件的列表,并将该列表传递给xargs
适用chmod
于每个文件的列表.