find -exec {} + 参数列表限制

Emm*_*maV 4 find xargs arguments

我知道当达到最大参数列表大小时,xargs会不断创建新列表,直到包含所有文件;

但是find -exec <command> {} +如果列表的大小超过输出,它会做同样的事情还是不起作用getconf ARG_MAX

Ste*_*itt 12

是的,find -exec ... {} +根据需要多次运行给定的命令以容纳所有参数,而不会超过每次调用中的最大参数列表大小。这是由POSIX指定的:

如果主表达式由 <加号> 标点,则主表达式应始终评估为真,并且评估主表达式的路径名应聚合为集合。[...] 仅包含两个字符“ {}”的参数应由一组聚合路径名替换,每个路径名作为单独的参数传递给调用的实用程序,其顺序与聚合的顺序相同。任何一组两个或多个路径名的大小都应受到限制,以便实用程序的执行不会导致超过系统的 {ARG_MAX} 限制。

(强调我的)。