EmmaV Asked: 2018-11-21 02:32:10 +0800 CST2018-11-21 02:32:10 +0800 CST 2018-11-21 02:32:10 +0800 CST find -exec {} + 参数列表限制 772 我知道当达到最大参数列表大小时,xargs会不断创建新列表,直到包含所有文件; 但是find -exec <command> {} +如果列表的大小超过输出,它会做同样的事情还是不起作用getconf ARG_MAX? find xargs 2 个回答 Voted Best Answer Stephen Kitt 2018-11-21T02:35:40+08:002018-11-21T02:35:40+08:00 是的,find -exec ... {} +根据需要多次运行给定命令以容纳所有参数,而不会超过每次调用中的最大参数列表大小。这是由POSIX指定的: 如果主表达式被 <加号> 标点,则主表达式应始终评估为真,并且评估主表达式的路径名应聚合到集合中。[...] 仅包含两个字符“ {}”的参数应替换为一组聚合路径名,每个路径名作为单独的参数传递给调用的实用程序,其顺序与聚合的顺序相同。应限制任何两个或多个路径名的大小,以使实用程序的执行不会导致超出系统的 {ARG_MAX} 限制。 (强调我的)。 Kusalananda 2018-11-21T02:36:00+08:002018-11-21T02:36:00+08:00 它做同样的事情,即 using-exec ... {} +将使用一批找到的路径名执行给定的实用程序一次或多次。这就是这个语法的用途。
是的,
find -exec ... {} +
根据需要多次运行给定命令以容纳所有参数,而不会超过每次调用中的最大参数列表大小。这是由POSIX指定的:(强调我的)。
它做同样的事情,即 using
-exec ... {} +
将使用一批找到的路径名执行给定的实用程序一次或多次。这就是这个语法的用途。