gpt4 book ai didi

regex - Find -regex 比 find | 慢grep

转载 作者:行者123 更新时间:2023-11-29 09:44:57 25 4
gpt4 key购买 nike

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

find $dir | grep "$regex"

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

find $dir -regex ".*${regex}.*"

我原以为结果会稍微快一些,因为没有创建额外的进程来解析正则表达式。

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

我已经为这种行为计时了:

寻找 |搜索结果

real   0m12.467s
user 0m2.568s
sys 0m7.260s

查找正则表达式结果

real   0m16.778s
user 0m6.772s
sys 0m6.380s

您知道为什么 find -regex 解决方案速度较慢吗?

最佳答案

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

另外,如果您正在对这个文件列表做任何事情,您真的应该使用一种对空格更安全的方式来做这件事。我不认为 grep 可以接受空分隔输入(尽管它可以输出),所以你应该使用 find [...] -regex [...] -print0 尽管速度较慢。

关于regex - Find -regex 比 find | 慢grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com