find命令中的“+”是做什么用的?

find命令中的“+”是做什么用的?

我有时+在使用 UNIX 命令时遇到尾随的使用,例如find.

示例来自所以帖子-

find . -exec touch -t 201007162310.00 {} +

请帮我理解这个的用途。

答案1

man find

-exec command {} +

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

例如find -exec touch -t 201007162310.00 {} +,如果find不带 的命令为-exec您提供文件1.txt2.txt3.txt,它将执行:

touch -t 201007162310.00 1.txt
touch -t 201007162310.00 2.txt
touch -t 201007162310.00 3.txt

-exec ... {} \;, 和

touch -t 201007162310.00 1.txt 2.txt 3.txt

-exec ... {} +

后一个版本速度更快,因为所需的新进程数量(少得多),但它的可移植性较差(并非所有find实现都支持它)。当然,如果您尝试的命令-exec不支持接收多个文件作为参数,则它将无法工作。

相关内容