递归 chmod

use*_*538 6 command-line find chmod xargs

我试图使用以下chmod文件夹和文件:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
Run Code Online (Sandbox Code Playgroud)

但我想知道:

  1. 如何在一行中使用find和排除目录...

  2. 哪种方法更好,find -exec或者xargs

mou*_*iel 10

是使用find还是xargs强制?

如果没有,您可以使用:

chmod -R u=rwX,go=rX *
Run Code Online (Sandbox Code Playgroud)


msw*_*msw 2

Sherlock got (1), for (2)xargs通常更可取,因为它允许更合理的语法和更少的 shell 调用开销。请注意find 和 xargs 的-print0-0选项,因为带有空格和特殊字符的路径可能会搞砸工作。

对于一次性运行,差异实际上并不重要,除非您正在修改一棵巨大的树。如果您经常这样做以将其形式化为脚本,我会使用 xargs。