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 {} +\n
Run 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
也会产生多个进程。请注意,它之所以有效,是因为可以采用多个路径;有些工具不能,对它们来说,语法是不可能的。chown
chown
+
-path
与整个路径匹配。路径就是find
我们认为的路径,不一定是规范路径。如果起始路径是/home/admin/web/public_html
,则每个测试的路径都将以该字符串开头;但如果起始路径是,则每个测试的路径都将以该./
字符串开头。在前一种情况下,即使prints也永远不会成立,因为相关目录将由字符串标识,而这是您想要与之匹配的字符串。一般来说,您需要将 的参数调整为起始位置(或者可能使用通配符)。-path /home/admin/web/public_html/content
realpath ./
/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 {} +\n
Run 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 {} +\n
Run 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 次 |
最近记录: |