通常,我发现自己需要为某人创建一个可执行目录树,即:
find . -type d -exec chmod ug+x {} \;
但是我不喜欢find的开销,并为每个目录运行一个“新的”chmod。
你们有更喜欢的选择吗?为什么呢?
答案 0 :(得分:6)
这个开销应该少得多:
find . -type d -exec chmod ug+x {} +
(由\;
替换+
。)这样做同样如此,但同时调用chmod
多个目录,这消除了多次调用chmod
的开销
从联系手册:
-exec command {} +
-exec
操作的此变体在所选文件上运行指定的命令,但命令行是通过在末尾附加每个选定的文件名来构建的;命令的调用总数将远远少于匹配文件的数量。命令行的构建方式与xargs构建命令行的方式大致相同。命令中只允许一个{}
实例。该命令在起始目录中执行。
这与此完全相似:
find . -type d -print0|xargs -0 chmod ug+x
答案 1 :(得分:2)
这并不完全符合您的要求,但它快速而简单且可能足够接近:
chmod -R ug+X .
大写X权限选项告诉chmod仅在有意义的情况下授予执行访问权限 - 如果项目是目录,或者已经启用了至少一个执行访问权限(即,它似乎是可执行文件)。 / p>