BurntSushi/ripgrep
开发工具面向代码库的快速递归正则搜索命令行工具,默认遵循 gitignore 并跳过隐藏和二进制文件。
项目介绍
ripgrep(命令名 rg)是一个按行搜索的工具,能在当前目录中递归查找正则表达式。它面向需要搜索源码树的开发者,与普通 grep 的主要差别在默认行为:遵循 .gitignore、.ignore 和 .rgignore 规则,跳过隐藏文件与目录,跳过二进制文件。使用 rg -uuu 可以关闭全部自动过滤。Windows、macOS 和 Linux 都是一等支持平台。
除基本匹配外,ripgrep 支持按文件类型过滤(rg -tpy foo 只搜 Python 文件)、显示匹配上下文、彩色高亮、完整 Unicode,并可通过 -P/--pcre2 或 --auto-hybrid-regex 选用 PCRE2 以支持环视和反向引用。它还能用 -z 搜索压缩文件、用 -E 指定非 UTF-8 编码、做替换改写输出、接入预处理器,并通过配置文件保存常用参数。
速度主要来自 Rust 正则引擎(有限自动机、SIMD 和字面量优化)、内存映射与增量缓冲的自动选择、用 RegexSet 匹配忽略规则,以及基于 crossbeam 和 ignore 的并行目录遍历。
快速使用
按平台选择包管理器安装,二进制名为 rg。macOS 或 Linuxbrew 用户可执行:
$ brew install ripgrep
Debian/Ubuntu 用户,或用 Rust/Cargo 安装(要求 Rust 1.96.0 及以上):
$ sudo apt-get install ripgrep
$ cargo install ripgrep
Windows、macOS 和 Linux 的预编译包见发布页。Windows 也可以用 choco install ripgrep、scoop install ripgrep 或 winget install BurntSushi.ripgrep.MSVC。
安装后直接在代码目录中搜索,结果会带文件路径和行号:
$ rg -n -w '[A-Z]+_SUSPEND'
如果要连被忽略的、隐藏的和二进制的文件一起搜索,使用 rg -uuu。
使用约束
- 从源码构建要求 Rust 1.96.0(stable)及以上。
- PCRE2 是可选能力,默认未启用;需要时用
--features 'pcre2'构建,或在支持该能力的安装上使用-P。 - ripgrep 不遵循 POSIX,不是任意系统上
grep的直接替代品;如果你需要到处都有、行为符合标准的工具,GNU grep 仍是更稳妥的默认选择。 - 维护者明确不推荐 Ubuntu 上的 Snap 包,原因是反复出现的异常问题。
- 采用 MIT 或 Unlicense 双许可。
HotRepo 点评
项目在 2026-11-07 的 Rust 日榜快照中位列第 9,当天新增 136 Star;Hacker News 上的发布讨论也持续有量:Ripgrep 13.0 在 2021 年获得 547 分、150 条评论,Ripgrep 15.0 在 2025 年获得 476 分、113 条评论。2026-08-01 关于 musl 二进制在超大搜索中偶发段错误的讨论获得 283 分、195 条评论,评论中有人把原因指向内核侧补丁,也有人指出 ripgrep 在 64 位 musl 构建下已改用 jemalloc 作为分配器。这些记录显示,这是一个被广泛使用、发布说明和边界问题都会受到认真审视的工具,而不是靠短期热度上榜的新项目。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。