unix – find -exec cmd {} vs | xargs

前端之家收集整理的这篇文章主要介绍了unix – find -exec cmd {} vs | xargs前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
哪一个是更有效的一个非常大的文件集,应该使用?
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 {}”,你可以从其他答案看到。

猜你在找的Bash相关文章