ripgrep(命令名为
rg)是使用 Rust 编写的现代化、跨平台递归文本搜索工具,定位是grep的高速替代品(同类工具还有ack与 The Silver Searcherag)。本文整理 ripgrep 的核心特性、常用参数示例、与 grep 的用法对照表及各平台安装方法,适合在大型代码库中快速查找文本。
核心特性
- 极致速度:基于 Rust 的并发搜索架构与专用正则引擎,速度通常显著快于
grep、ack、ag。默认正则引擎语法接近 ERE;如需 look-around、backreference 等特性,可加-P(--pcre2,要求构建时启用 PCRE2 支持,可通过rg --version的features字段确认)。 - 智能默认过滤:
- 自动尊重
.gitignore、.ignore、.rgignore中的过滤规则,不会搜索被忽略的文件; - 默认跳过隐藏文件与隐藏目录;
- 默认跳过二进制文件。
- 自动尊重
- 输出友好:默认彩色高亮匹配内容,按文件分组展示;连接终端(tty)时默认显示行号(等价于
grep -n)。 - 跨平台:Linux、macOS、Windows 均有良好支持。
常用示例
# 基础搜索:在当前目录递归搜索(rg 默认递归,无需 grep 的 -r)
rg "hello world"
# 忽略大小写
rg -i "error"
# 只搜索指定类型的文件(py 为 python 类型的别名)
rg -t py "import"
# 查看全部支持的文件类型
rg --type-list
# 显示匹配行的上下各 3 行(-A N 匹配行后 N 行,-B N 匹配行前 N 行)
rg -C 3 "password"
# 降低"智能过滤"级别(最多重复 3 次,等效关系逐级叠加)
rg -u "pattern" # 等效 --no-ignore:不再遵守 .gitignore/.ignore/.rgignore
rg -uu "pattern" # 等效 --no-ignore --hidden:额外搜索隐藏文件与目录
rg -uuu "pattern" # 等效 --no-ignore --hidden --binary:额外搜索二进制文件
# 只列出包含匹配内容的文件名
rg -l "password"
# 统计每个文件的匹配行数 / 输出汇总统计信息
rg -c "error"
rg --stats "error"
# 全词匹配(匹配 cat,不匹配 category、tomcat)
rg -w "cat"
# 按 glob 过滤搜索范围
rg -g '*.go' "error"
# 固定字符串搜索(不做正则解析,无需转义)
rg -F "a.b(c)"
# 预览替换效果(仅在输出中显示替换结果,不会修改文件)
rg -r 'failure' "error"
# 作为管道过滤器使用(可省略文件名参数)
ps aux | rg sshd与 grep 的常用参数对照
| grep 用法 | rg 等价用法 | 说明 |
|---|---|---|
grep -r PATTERN . | rg PATTERN | rg 默认递归搜索 |
grep -i PATTERN | rg -i PATTERN | 忽略大小写 |
grep -n PATTERN | rg PATTERN | 终端输出时行号默认开启 |
grep -l PATTERN | rg -l PATTERN | 只列出匹配的文件名 |
grep -w PATTERN | rg -w PATTERN | 全词匹配 |
grep -C 3 PATTERN | rg -C 3 PATTERN | 显示上下文 |
grep -E PATTERN | rg PATTERN | 默认正则语法接近 ERE,无需 -E |
grep -F PATTERN | rg -F PATTERN | 固定字符串匹配 |
grep -v PATTERN | rg -v PATTERN | 反向匹配 |
安装
rg 通常不预装在 Linux 发行版中,需通过包管理器安装 ripgrep 软件包:
# Ubuntu / Debian
sudo apt install ripgrep
# Fedora / RHEL 8+(旧版 CentOS 7 需先启用 EPEL 源)
sudo dnf install ripgrep
# Arch Linux
sudo pacman -S ripgrep
# macOS(Homebrew)
brew install ripgrep安装完成后通过 rg --version 验证。
参考
最近更新
最新评论