除了使用 find 之外,仅在目录上设置 x 位的方法

发布于 2024-12-01 21:16:17 字数 160 浏览 2 评论 0原文

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

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

但我不喜欢查找的开销,以及为每个目录运行“新”chmod。

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

Often, I find myself needing to make a tree of directories executable for someone, ie:

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

But I don't like the overhead of find, and running a "new" chmod for every dir.

You folks have preferred alternatives? Why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薄荷港 2024-12-08 21:16:17

这个的开销应该少得多:(

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

+ 替换 \;。)这会做同样的事情,但会在以下位置调用多个目录的 chmod一次,这就消除了多次调用 chmod 的开销。

来自联机帮助页:

-exec 命令 {} +  

-exec 操作的此变体对所选文件运行指定的命令,但命令行是通过在末尾附加每个所选文件名来构建的;该命令的调用总数将远小于匹配的文件数。命令行的构建方式与 xargs 构建其命令行的方式大致相同。命令中只允许有一个 {} 实例。该命令在起始目录中执行。

这与此非常相似:

find . -type d -print0|xargs -0 chmod ug+x

This one should have much less overhead:

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

(Replaced \; by +.) This does the same thing, but calls chmod with many directories at once, which eliminates the overhead of calling chmod multiple times.

From the manpage:

-exec command {} +  

This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of {} is allowed within the command. The command is executed in the starting directory.

This is quite similar to this:

find . -type d -print0|xargs -0 chmod ug+x
黑凤梨 2024-12-08 21:16:17

这并不完全符合您的要求,但它快速、简单,并且可能足够接近:

chmod -R ug+X .

大写的 X 权限选项告诉 chmod 仅在有意义时才授予执行访问权限 - 如果该项目是一个目录,或者已经在至少启用一个执行访问(即,如果它看起来是一个可执行文件)。

This doesn't do exactly what you want, but it's fast and simple and may be close enough:

chmod -R ug+X .

The capital X permission option tells chmod to grant execute access only if it makes sense -- if the item is a directory, or already has at least one execute access enabled (i.e. if it appears to be an executable file).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文