msw*_*msw 15
可能是因为您没有命名的目录*.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
Run Code Online (Sandbox Code Playgroud)
-R告诉chmod你进入任何作为参数给出的目录.
如果你说chmod -R 775 *.cgi,shell将扩展*.cgi为与该模式匹配的文件列表,并将其作为参数列表传递 - 因此chmod不会要求查看任何其他目录.
(这将递归到任何目录相匹配*.cgi...)
要完成你想要的尝试
find . -name '*.cgi' -print0 | xargs -0 chmod 755
Run Code Online (Sandbox Code Playgroud)
这里find生成一个.cgi包含当前目录向下结尾的所有文件的列表,并将该列表传递给xargs适用chmod于每个文件的列表.