除了使用find之外,只在dirs上设置x位的方法

时间:2011-08-29 20:31:28

标签: bash shell find chmod

通常,我发现自己需要为某人创建一个可执行目录树,即:

find . -type d -exec chmod ug+x {} \;

但是我不喜欢find的开销,并为每个目录运行一个“新的”chmod。

你们有更喜欢的选择吗?为什么呢?

2 个答案:

答案 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>