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

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

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

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

答案1

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

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

(强调我的)。

答案2

它做同样的事情,即 using-exec ... {} +将使用批量找到的路径名执行给定的实用程序一次或多次。这就是这个语法的用途。

相关内容