速度碾压grep 30倍!这个Rust写的搜索工具让开发者直呼内行

lxiol
📝
ripgrep是Rust编写的极速搜索工具,性能碾压grep,支持智能过滤、压缩文件搜索及多平台安装。

原文链接:https://mp.weixin.qq.com/s/NQGDiftjPywyqv4pfJX93Q

ripgrep是Rust编写的极速搜索工具,性能碾压grep,支持智能过滤、压缩文件搜索及多平台安装。

速度碾压 grep 30 倍!这个 Rust 写的搜索工具,让开发者直呼内行

在代码海洋里找一行字,你需要一把更快的”刀”

你是否经历过这样的场景:在一个大型项目里搜索某个函数名或关键词,等 grep -r 跑完的结果出来,咖啡都凉了三回?或者更离谱的——你明明知道那行代码就在某个 .gitignore 排除的目录里,但工具就是停不下来,硬生生扫过那些 node_modules 和 target 文件夹?

如果你也深受其苦,今天这篇文章可能会彻底改变你的搜索习惯。

📚 什么是 ripgrep?

ripgrep(简称 rg)是一个用 Rust 编写的行级文本搜索工具,它的核心使命只有一个:在最快的时间里,找到你想要的那行代码。

由开发者 Andrew Gallant(GitHub ID: BurntSushi)发起,ripgrep 自 2016 年诞生以来,迅速成为开发者命令行工具链中不可或缺的一环。

⭐ 核心功能

  • ✅ 递归搜索:自动遍历当前目录及其所有子目录
  • 🔧 智能过滤:默认遵守 .gitignore 规则,跳过隐藏文件和二进制文件
  • ⚡ 极速搜索:基于 Rust 正则引擎,性能远超传统 grep
  • 🌍 全平台支持:Windows、macOS、Linux 全覆盖,预编译二进制一键安装
  • 🔤 多编码支持:UTF-8、UTF-16、GBK、Shift_JIS 等主流编码轻松应对
  • 📦 压缩文件搜索:直接搜索 gzip、bzip2、xz 等格式的文件内容

数据说话:⭐ 66,000+ Stars | 🍴 2,600+ Forks | 📅 最近更新于 2026年7月 | 🦀 Rust 语言开发

🚀 快速开始

安装

ripgrep 的安装方式非常多样,覆盖了你可能用到的几乎所有平台:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# macOS / Linux (Homebrew)

brew install ripgrep

# Ubuntu / Debian

sudo apt install ripgrep

# Arch Linux

sudo pacman -S ripgrep

# Fedora

sudo dnf install ripgrep

# Windows (Chocolatey)

choco install ripgrep

# Windows (Scoop)

scoop install ripgrep

# Cargo 直接安装(需要 Rust 环境)

cargo install ripgrep

江达小记

基本使用

安装完成后,用 rg 命令替代你熟悉的 grep:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 在项目中搜索 "useState"

rg "useState"

# 显示行号 + 彩色高亮

rg -n "console.log"

# 只搜索 Python 文件

rg -tpy "def main"

# 排除 JavaScript 文件

rg -Tjs "import "

# 在压缩文件中搜索(比如 .gz 文件)

rg -z "pattern" *.gz

江达小记

是不是跟 grep 用起来几乎一模一样?没错,ripgrep 的设计哲学就是:你不需要学习新东西,只需要获得更快的结果。

💡 为什么它这么快?

这才是 ripgrep 真正的杀手锏。官方文档里有一组令人震惊的对比数据:

在 Linux 内核源码(约千万行代码)中搜索特定模式时:

工具

耗时
ripgrep****0.082 秒
git grep (Unicode)

2.67 秒(慢 32.7 倍)

ack

2.94 秒(慢 35.9 倍)

在单文件搜索中,ripgrep 同样领先 GNU grep 6 倍以上

它凭什么这么快?

1. Rust 的正则引擎是核心引擎

ripgrep 内置的正则表达式引擎基于 Rust 的 regex crate,它使用确定性有限自动机(DFA)来匹配模式。简单说,就是引擎在搜索前先把正则表达式编译成一种”超级高效的查找表”,然后像闪电一样扫过文件内容。

2. SIMD 指令集加速

现代 CPU 都支持 SIMD(单指令多数据)技术,ripgrep 充分利用了这一点,让一次 CPU 操作同时处理多个字节的数据,搜索速度直接起飞。

3. 并行目录遍历

ripgrep 使用 crossbeam 库实现了无锁的并行递归目录遍历。它不是逐层扫描文件夹,而是像一群工人在不同楼层同时干活——充分利用多核 CPU 的力量。

4. 智能搜索策略

对于单个大文件,ripgrep 自动选择内存映射(mmap)方式;对于大量小文件,则采用流式增量搜索。它自己判断哪种方式更快,你不需要操心。

🛠️ 进阶玩法

文件类型过滤

1
2
3
4
5
6
7
8
9
10
11
12
13
# 只搜索 Go 源文件

rg "struct" -tgo

# 排除 Markdown 文件

rg "TODO" -Tmd

# 自定义文件类型规则

rg "hello" --type-add 'mytype:*.custom' --type mytype

江达小记

PCRE2 支持(高级正则)

默认的正则引擎已经很快了,但如果你需要回溯引用(backreference)或环视(lookahead/lookbehind),可以切换到 PCRE2:

1
2
3
4
5
6
7
8
9
# 使用 PCRE2 引擎搜索

rg -P "(?<=function\s)\w+"

# 自动混合模式(仅必要时用 PCRE2)

rg --auto-hybrid-regex "pattern"

江达小记

压缩文件直接搜

1
2
3
4
5
# 直接在 .gz 文件中搜索内容

rg -z "error log entry" *.gz

江达小记

这个功能在排查日志归档时非常实用,不用先解压就能找到目标行。

配置文件支持

ripgrep 支持通过 ~/.config/rg/config 配置文件设置默认参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 始终显示行号

line-number

# 始终彩色高亮

color always

# 忽略 node_modules

glob !node_modules/*

江达小记

✅ 优缺点分析

优点:

  • 🚀 速度极致:在绝大多数场景下碾压传统 grep、ack、ag,最快可达 30 倍以上
  • 🔒 默认过滤:自动跳过 .gitignore 中的文件和二进制文件,搜索范围精准
  • 🦀 单二进制文件:无需安装运行时环境,下载即用,静态链接零依赖
  • 🌐 编码友好:Unicode 原生支持,中文、日文等复杂编码搜索不翻车
  • 🔧 功能全面:从 PCRE2 到压缩文件搜索,该有的都有
  • 💰 完全免费:Unlicense 或 MIT 双协议授权,无任何限制

注意事项:

  • ⚠️ 非 POSIX 标准工具:如果你需要脚本跨平台兼容且保证所有机器都能运行,grep 仍然是更稳妥的选择
  • 📚 正则引擎差异:默认引擎不支持 PCRE2 的部分高级特性(如回溯引用),需要显式开启 -P 标志
  • 🧩 极端场景性能:在某些特殊正则模式下(如没有字面量优化机会的复杂模式),性能优势会缩小,但依然保持领先

🎯 总结

ripgrep 用一句话概括就是:如果你每天要在代码里搜索东西,它值得成为你的默认工具。

它不是简单地在 grep 的基础上”加了一点优化”,而是从底层重构了整个搜索流程——Rust 的正则引擎、SIMD 加速、并行遍历、智能策略,每一个环节都在为”更快”这一目标服务。

对于开发者来说,每天节省的几秒搜索时间,一年下来就是好几个小时的隐形收益。更重要的是,那种”敲下命令立刻出结果”的流畅感,会让你的开发体验提升一个档次。

💬 互动环节:你平时用什么工具搜索代码?有没有被慢速搜索折磨过的经历?欢迎在评论区分享你的故事!

🔗 相关链接:


💬 本文评论区已开启,但暂无读者留言。

本文转载自微信公众号,如有侵权请联系删除。

  • 标题: 速度碾压grep 30倍!这个Rust写的搜索工具让开发者直呼内行
  • 作者: lxiol
  • 创建于 : 2026-07-20 17:28:07
  • 更新于 : 2026-07-20 17:28:07
  • 链接: https://blog.lxiol.cn/2026/07/20/速度碾压grep-30倍这个Rust写的搜索工具让开发者直呼内行/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。