在大量文件中,哪一个效率更高,应该使用?
find . -exec cmd {} +
要么
find . | xargs cmd
(假设文件名中没有有趣的字符)
速度差异不明显。
但是您必须确保:
您的脚本不会假定文件名中没有文件空间,制表符等。第一个版本是安全的,第二个则不是。
您的脚本不会将以“ -” 开头的文件作为选项。
-
因此,您的代码应如下所示:
find . -exec cmd -option1 -option2 -- {} +
find . -print0 | xargs -0 cmd -option1 -option2 --
第一个版本更短并且更容易编写,因为您可以忽略1,但是第二个版本更可移植且更安全,因为“ -exec cmd {} +”是GNU findutils中的一个相对较新的选项(自2005年以来,许多运行中的系统都没有它)最近是越野车。-exec cmd {} +您还可以从其他答案中看到很多人也不知道这个“ ”。
-exec cmd {} +