17 “ +”在所有找到的文件中组成一个大命令行,以最大程度地减少要运行的命令数量。 考虑到find命令查找四个文件的情况。 find . -type f -exec command '{}' \; 会产生 command file1 command file2 command file3 command file4 另一方面 find . -type f -exec command '{}' \+ 产生 command file1 file2 file3 file4 — 德梅克 source 3 如果您知道xargs,-exec … {} +则执行与相同的操作-print | xargs …,但是没有引用问题(这-print0 | xargs -0是另一种方法,但是它的可移植性较差)。 — 吉尔(Gilles)'所以
4 从手册页: -exec命令{} + -exec操作的此变体在选定的文件上运行指定的命令,但是通过在末尾附加每个选定的文件名来构建命令行。该命令的调用总数将远小于匹配文件的数目。命令行的构建与xargs构建命令行的方式几乎相同。命令中仅允许一个{{}”实例。该命令在起始目录中执行。 — 坦达 source 1 男人,非常...简洁?我发现它缺乏深度和清晰度。 — xenoterracide 2010年 这样做的目的不是盲目地为每个文件生成一个进程,而是将文件名收集在一起并更少地调用命令。一个示例:它不是创建3个不同的“ rm FILENAME”进程,而是收集文件名并执行“ rm FILE1 FILE2 FILE3”。 — tante IIRC的某些xargs版本可以选择将这些名称一起批处理到指定的限制,因此您可以从中受益,但是当列表很大时也可以避免溢出。 — 凯文·坎图 (查找本身就是一种令人恐惧的小语言!) — 凯文·坎图 find给我一个半。 — 马特·亚历山大
xargs
,-exec … {} +
则执行与相同的操作-print | xargs …
,但是没有引用问题(这-print0 | xargs -0
是另一种方法,但是它的可移植性较差)。