首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Find -regex比find | grep慢

Find -regex比find | grep慢
EN

Stack Overflow用户
提问于 2012-05-03 20:25:21
回答 1查看 640关注 0票数 2

我有一个使用正则表达式查找文件的脚本。代码如下:

代码语言:javascript
复制
find $dir | grep "$regex"

脚本运行得有点慢,我想对其进行优化。搜索需要一些时间来执行,我希望从中获得更好的性能。我尝试过这样的尝试:

代码语言:javascript
复制
find $dir -regex ".*${regex}.*"

我期望得到稍微快一点的结果,因为不会创建额外的进程来解析正则表达式。

然而,结果是不同的,令我惊讶的是,命令"find | grep“比"find -regex”更快(尽管它需要更多的系统时间,正如人们所预期的那样)

我对此行为进行了计时:

Find | grep结果

代码语言:javascript
复制
real   0m12.467s
user   0m2.568s
sys    0m7.260s

查找-regex结果

代码语言:javascript
复制
real   0m16.778s
user   0m6.772s
sys    0m6.380s

你知道为什么find -regex解决方案比较慢吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-03 23:41:42

很可能是因为grep和它的正则表达式引擎经过了多年的高度优化,因为这是它唯一的目的(“做一件事,做好它”)。我不知道find使用的正则表达式引擎是什么,但它显然没有grep的那么精致,可能是因为它是一个较少使用的次要特性。

此外,如果您要对此文件列表执行任何操作,您实际上应该使用一种更安全的空格方式。我认为grep不能接受空分隔符的输入(尽管它可以输出它),所以您应该使用find [...] -regex [...] -print0,尽管它比较慢。

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

https://stackoverflow.com/questions/10431331

复制
相关文章

相似问题

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