答案1
从man find
:
-exec command {} +
此
-exec
操作的变体对选定的文件运行指定的命令,但命令行是通过在末尾附加每个选定的文件名来构建的;该命令的调用总数将远小于匹配的文件数。命令行的构建方式与 xargs 构建其命令行的方式大致相同。{}
命令中只允许出现一个 的实例。该命令在起始目录中执行。
例如find -exec touch -t 201007162310.00 {} +
,如果find
不带 的命令为-exec
您提供文件1.txt
、2.txt
和3.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
不支持接收多个文件作为参数,则它将无法工作。