一尘不染

找到-exec cmd {} + vs | xargs

linux

在大量文件中,哪一个效率更高,应该使用?

find . -exec cmd {} +

要么

find . | xargs cmd

(假设文件名中没有有趣的字符)


阅读 238

收藏
2020-06-07

共1个答案

一尘不染

速度差异不明显。

但是您必须确保:

  1. 您的脚本不会假定文件名中没有文件空间,制表符等。第一个版本是安全的,第二个则不是。

  2. 您的脚本不会将以“ -” 开头的文件作为选项。

因此,您的代码应如下所示:

find . -exec cmd -option1 -option2 -- {} +

要么

find . -print0 | xargs -0 cmd -option1 -option2 --

第一个版本更短并且更容易编写,因为您可以忽略1,但是第二个版本更可移植且更安全,因为“ -exec cmd {} +”是GNU
findutils中的一个相对较新的选项(自2005年以来,许多运行中的系统都没有它)最近越野车-exec cmd {} +您还可以从其他答案中看到很多人也不知道这个“ ”。

2020-06-07