首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xargs比不使用xargs快吗?

使用xargs比不使用xargs快吗?
EN

Unix & Linux用户
提问于 2011-11-13 10:49:18
回答 2查看 1.8K关注 0票数 5

这样更快吗?

代码语言:javascript
复制
find /tmp -name core -type f | xargs /bin/rm -f

而不是这样做的:

代码语言:javascript
复制
find /tmp -name core -type f -exec /bin/rm -f {} \;

那么,使用xargs会提高总体速度吗?

(我从xargs的手册页得到了这个例子。)

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2011-11-13 12:30:10

正如Mat已经说过的那样,在一般情况下,您应该意识到一个事实,即每个字节都可以位于文件名中,除了NUL字符(因为它分隔字符串的结尾)和/ (因为它删除路径元素)。因此,您的xargs示例应该是(在GNU系统上)

代码语言:javascript
复制
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f

等效的是查找中的-exec,但使用的是+而不是\;

代码语言:javascript
复制
find /tmp -name core -type f -exec /bin/rm -f {} +

这个版本并不是为每个文件调用/bin/rm,而是像xargs一样打包参数。

票数 7
EN

Unix & Linux用户

发布于 2011-11-13 11:15:40

第一个版本可能比第二个版本更快:xargs将一次将多个文件传递给rm,但是find将在每个文件中调用rm一次。

因此,使用第一个版本时,可以减少叉/exec调用。

(如果只有一个匹配或者根本没有匹配,那么第二个版本可能会更快:不需要执行xargs本身。)

但我不认为这是一个好的标准来选择一个或另一个。在这种特殊情况下,您不必担心奇怪的文件名,但通常您应该这样做。第二个版本更安全,所以通常您应该使用它。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/24522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档