我想知道当我在命令中使用时,使用+和命令;结束之间有什么区别?-execfind
find .... -exec ... \;
Run Code Online (Sandbox Code Playgroud)
VS
find .... -exec ... +
Run Code Online (Sandbox Code Playgroud)
Oli*_*Oli 40
-exec ... \;将一个接一个地运行。因此,如果您有三个文件,则 exec 行将运行 3 次。
-exec ... {} +用于一次可以处理多个文件的命令(例如cat, stat, ls)。找到的文件find像xargs命令一样链接在一起。这意味着更少的分叉,对于小型操作,可能意味着显着的加速。
这是一个包含 10,000 个空文件的性能演示。
$ mkdir testdir
$ touch testdir/{0000..9999}
$ time find testdir/ -type f -exec cat {} \;
real 0m8.622s
user 0m0.452s
sys 0m8.288s
$ time find testdir/ -type f -exec cat {} +
real 0m0.052s
user 0m0.015s
sys 0m0.037s
Run Code Online (Sandbox Code Playgroud)
同样,这仅适用于可以采用多个文件名的命令。您可以通过查看其联机帮助页来确定您的命令是否与此类似。以下是摘自man cat:
SYNOPSIS
cat [OPTION]... [FILE]...Run Code Online (Sandbox Code Playgroud)
省略号[FILE]...表示它可以包含多个文件。
+只能用于单个命令,并且您必须{}在行中恰好有一个。\;可以与多个零对多组一起操作。
| 归档时间: |
|
| 查看次数: |
3696 次 |
| 最近记录: |