Answers:
我有时使用单个find
命令来执行此操作。丑陋但有效。
find /p/a/t/h \( -type d -exec chmod 755 {} \; \) -o \( -type f -exec chmod 644 {} \; \)
find . -type d -exec chmod -vc 755 "{}" \;
(包括-vc
一些反馈)。(也许只是为了澄清,将两个独立的命令也添加到答案中?)
在手册页中使用X权限:
如果文件是目录,则执行/搜索位或任何执行/搜索位都设置为原始(未修改)模式。带有烫发符号“ X”的操作仅与操作符“ +”结合使用才有意义,在所有其他情况下都将被忽略。
因此,请执行以下操作:
chmod -R a-x [directory]
chmod -R a+rwX [directory]
这会从所有文件和目录中删除执行位,然后为所有内容添加读取和写入权限,并仅对目录执行权限。(从第一步开始,常规文件就不再具有执行位。)
chmod -R a-x [directory]
紧随其后chmod -R a+rwX [directory]
吗?
a-x
,将无法访问该目录。实际上,chmod失败,权限被拒绝,并且不会从目录内的文件中删除可执行位。有没有办法做到这一点而无需root?
您还可以find
与结合使用xargs
:
find . -type f -print0 | xargs -0 chmod 666
find . -type d -print0 | xargs -0 chmod 777
其中-type
指定d irectory或˚F ILE。
xargs
足够聪明,可以将较长的命令行分解为多个执行。请查阅您的xargs联机帮助页,并确保进行检查xargs --show-limits
。