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 {}”,你可以从其他答案看到。

http://stackoverflow.com/questions/896808/find-exec-cmd-vs-xargs

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:unix – find -exec cmd {} vs | xargs