Mit*_*tra 5 linux debian chmod chown file-permissions
我想排除一些大的内容目录
我用它来 chown 目录
chown -R admin /home/admin/web/public_html
Run Code Online (Sandbox Code Playgroud)
无论如何要排除html下的子目录
喜欢:
chown -R admin exclude=/home/admin/web/public_html/content /home/admin/web/public_html
Run Code Online (Sandbox Code Playgroud)
类似的东西
谢谢
chown -R admin $(ls -I content)
Run Code Online (Sandbox Code Playgroud)
ls -I 将列出除指定模式之外的所有内容。
在 Linux 中,对满足某些条件的文件执行某些操作的最通用工具是find. 很少有其他答案基于这个find \xe2\x80\xa6 | xargs \xe2\x80\xa6想法,只有当它使用空终止字符串时,它才是稳健的。这意味着find \xe2\x80\xa6 -print0 | xargs -0 \xe2\x80\xa6,但 POSIX 不需要这些选项。
对于POSIX,find通常使用它-exec比通过管道传输到xargs. -exec就我个人而言,即使我可以安全地使用,我也更喜欢xargs。知道这-exec也是一个测试,因此它可以用于构建自定义测试(示例),无论如何熟悉它都是很好的;然后就没有理由不使用它来代替xargs. 真正的强大之处xargs在于它能够解析带有引号和转义字符的字符串;但这在读取时几乎没有用find,几乎总是有害的。非 POSIX 选项如-0和--no-run-if-empty可以成为xargs的良好伴侣find \xe2\x80\xa6 -print0,但好的 POSIX 仍然-exec(几乎?)总是至少一样好。
您的问题可以通过以下方式解决
\nfind /home/admin/web/public_html \\\n -path /home/admin/web/public_html/content -prune \\\n -o -exec chown admin {} +\nRun Code Online (Sandbox Code Playgroud)\n它的工作原理如下:如果路径是,\xe2\x80\xa6/content则不要下降到它(-prune);否则 ( -o)chown admin对文件执行(注意:目录也是文件)。
笔记:
\n不要chown -R在这里使用。测试的第一个文件是/home/admin/web/public_html,如果您使用chown -R它,则不会排除任何内容。
-exec chown \xe2\x80\xa6 {} +可以并且将会向 传递多个路径chown,而-exec chown \xe2\x80\xa6 {} \\;只会传递一个路径(因此每个文件都会生成一个路径chown)。该语法+减少了生成进程的数量chown,从而加快了速度。即使这样,如果文件数量对于单个命令行来说太大(比较“参数列表太长”),find也会产生多个进程。请注意,它之所以有效,是因为可以采用多个路径;有些工具不能,对它们来说,语法是不可能的。chownchown+
-path与整个路径匹配。路径就是find我们认为的路径,不一定是规范路径。如果起始路径是/home/admin/web/public_html,则每个测试的路径都将以该字符串开头;但如果起始路径是,则每个测试的路径都将以该./字符串开头。在前一种情况下,即使prints也永远不会成立,因为相关目录将由字符串标识,而这是您想要与之匹配的字符串。一般来说,您需要将 的参数调整为起始位置(或者可能使用通配符)。-path /home/admin/web/public_html/contentrealpath .//home/admin/web/public_html./content-path-path
如果您需要排除多种模式,请按照以下示例操作:
\nfind . \\\n -path ./content -prune \\\n -o -path ./foo/bar -prune \\\n -o -path \'*/baz\' -prune \\\n -o -exec chown admin {} +\nRun Code Online (Sandbox Code Playgroud)\n可以压缩为
\nfind . \\\n \\( -path ./content \\\n -o -path ./foo/bar \\\n -o -path \'*/baz\' \\\n \\) -prune \\\n -o -exec chown admin {} +\nRun Code Online (Sandbox Code Playgroud)\n其中括号很重要。
\n有了它,-regex您也许可以将多种模式组合成一种模式(示例)。尽管 POSIX 未指定此测试,但其实现find可能支持也可能不支持。您标记了debian;Debian 中find是 GNU find,它支持-regex.
其他测试(例如-name或什至-exec)可用于排除文件。
小智 0
find . -type d -not -path /home/admin/web/public_html -prune -o -print0 | xargs -0 chown admin
Run Code Online (Sandbox Code Playgroud)
其中-type d按目录过滤并-not -path /home/admin/web/public_html排除目录。
| 归档时间: |
|
| 查看次数: |
13689 次 |
| 最近记录: |