对于非常大的文件集,应该使用哪个更有效?
find . -exec cmd {} +
或
find . | xargs cmd
(假设文件名中没有有趣的字符)
最佳答案
速度差异将是微不足道的。
但你必须确保:
你的脚本不会假设没有 文件中将有空格、制表符等 文件名;第一个版本是 安全,第二个不安全。
您的脚本不会将“-
”开头的文件视为选项。
所以你的代码应该是这样的:
find . -exec cmd -option1 -option2 -- {} +
或
find . -print0 | xargs -0 cmd -option1 -option2 --
第一个版本更短更容易写,因为你可以忽略 1,但是
第二个版本更加便携和安全,因为“-exec cmd {} +
”是 GNU findutils 中一个相对较新的选项(自 2005 年以来,许多正在运行的系统还没有它)而且它是buggy recently .也有很多人不知道这个“-exec cmd {} +
”,正如您从其他答案中看到的那样。
https://stackoverflow.com/questions/896808/