linux - 查找 -exec cmd {} + vs | xargs

对于非常大的文件集,应该使用哪个更有效?

find . -exec cmd {} +

find . | xargs cmd

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

最佳答案

速度差异将是微不足道的。

但你必须确保:

  1. 你的脚本不会假设没有 文件中将有空格、制表符等 文件名;第一个版本是 安全,第二个不安全。

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

所以你的代码应该是这样的:

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/

相关文章:

linux - 每个虚拟主机的error_log?

python - 如何将 python 日期时间转换为具有可读格式日期的字符串?

linux - 检索最后 100 行日志

linux - 如何找出适合由 shell 脚本解析的 linux 机器的总物理内存 (RAM)?

linux - 如何让 CRON 调用正确的路径

python - 如何搜索和替换文件中的文本?

python - Django 1.7 抛出 django.core.exceptions.AppR

python - 如何访问 Django 模板中的字典元素?

python - 在进程运行时不断打印子进程输出

android - 找不到构建工具修订版 23.0.1