ripgrep:15.2 版开源递归搜索工具,自动跳过隐藏文件与无关目录
摘要
ripgrep 是 Rust 编写的开源递归搜索工具,15.2 版默认遵循三层忽略规则,自动跳过隐藏文件与无关目录,支持按类型筛选、PCRE2 正则与压缩文件搜索。
- 软件名称
- ripgrep
- 版本
- 15.2
- 收费
- 免费
- 开源
- 开源
- 操作系统
- WindowsmacOSLinux
- 更新时间
- 2026-10-19 20:58
ripgrep 把递归搜索变成了默认动作:在项目根目录敲下 rg 和想找的模式,它会在整棵目录树里匹配,同时自动绕开被忽略的目录、隐藏文件与二进制文件。2026 年 7 月发布的 15.2 是它当前的稳定版本。
默认值替你做了减法
在稍大的项目里,真正想搜的代码通常只占目录树的一小部分。构建产物、依赖缓存、日志、编辑器临时文件散在各处,逐层限定范围既费神又容易漏。ripgrep 的命令名是 rg,它把过滤放在了最前面:默认读取 .gitignore、.ignore 与 .rgignore 三份忽略规则,跳过隐藏目录与被判定为二进制的文件,只在可能是源码的范围内查找。这套默认值不需要配置,装好就能直接用。
需要看全部内容时也有出口。加上 -uuu 会一次性关掉自动过滤,被忽略的、隐藏的、二进制的文件全部回到搜索范围。默认克制、需要时放开,这个取舍贯穿了它的参数设计。

用类型把范围再收窄一层
知道要搜的是哪一类文件时,用 -t 只保留指定类型,用 -T 把某一类排除在外。查脚本、翻配置、找文档,各用各的类型,结果里不会混进无关的扩展名。内置类型之外还能自己定义规则,登记一次之后,自定义类型与内置类型一样按 -t 调用。
正则引擎可以换一套
默认使用 Rust 自带的正则引擎,语法覆盖面足够应付日常检索,也不会踩到回溯失控那类坑。碰到必须用环视或者反向引用的写法,加 -P 切到 PCRE2 引擎,这两类构造就能用上。不想每次记参数,可以用 --auto-hybrid-regex 让程序按模式需要自动切换,也可以用 --engine 在默认、PCRE2、自动三者之间显式指定。切换只影响正则的语法能力,递归搜索、跳过隐藏文件这些默认行为保持不变。
压缩包里的内容也能直接搜
加上 -z 之后,gzip、bzip2、xz、lz4、lzma、zstandard、brotli 七种压缩格式不必先解压,里面的文本会和普通文件一样被匹配到。日志归档、打包好的离线文档这类材料,平时要解压才查得动,现在一条命令就能翻。
要搜 PDF 这类二进制文档,用 --pre 挂一个预处理命令,由它把文件转成文本再交给 ripgrep。预处理是你自己给的命令,转换方式不受限制,扫描版文档先做文本提取也能接进来。
编码与配置上的余地
文本编码默认按 UTF-8 处理,带 BOM 的 UTF-16 文件能自动识别。遇到 latin-1、GBK、EUC-JP、Shift_JIS 这类编码,用 -E 显式指定即可,不必先把文件转码。老项目里混着几种编码的文档,这一项省掉的往往是来回折腾的时间。
配置文件是另一层省事的设计。把常用的默认参数写进配置文件,之后每次调用都会带上,不必在命令行重复输入。对每天要敲很多次 rg 的人来说,这比背参数实在。
速度来自几处具体的取舍
提速的手段都不玄。正则引擎用有限自动机,配合 SIMD 指令与字面量优化;单个文件走内存映射,大目录改成带中间缓冲的增量读取,由程序自己挑更合适的那一种;忽略规则用 RegexSet 一次比对多条 glob,跳过无关目录这一步本身开销很小;目录遍历采用无锁并行。官方给出的基准里,对《福尔摩斯全集》跑同一条查询,耗时约一秒。
版本与许可
15.2.0 于 2026 年 7 月 15 日发布,改动集中在跨目录搜索时 gitignore 匹配的缺陷,同时改善了超大仓库的目录遍历耗时。项目以 MIT 与 Unlicense 双许可发布,代码公开在 GitHub 上,由 Andrew Gallant 也就是 BurntSushi 维护,Windows、macOS、Linux 三个平台都提供原生二进制。
ripgrep 的价值不在于参数多,而在于默认值足够对:忽略规则自动生效,隐藏文件与无关目录被挡在外面,需要放开时一个 -uuu 就回到全量。把这类琐碎判断交给工具,搜索这件事才回到它本来的样子。