Linux 命令速查
文本处理 man rg

rg

ripgrep:递归搜索目录中的文本,速度快且默认尊重 .gitignore。

返回

补充说明

rg 是 BurntSushi 用 Rust 编写的搜索工具,可视为 grep -R 的现代替代品。它默认递归遍历、自动跳过隐藏文件和 .gitignore 中忽略的路径、跳过二进制文件,并利用多线程和正则引擎获得很高吞吐,是代码检索的常用工具。

默认输出带行号和文件名,匹配部分高亮;在管道中会自动关闭颜色和行号。它支持正则、固定字符串、按文件类型过滤(-t)、glob 过滤(-g)、上下文行、替换输出等。需要搜索隐藏文件或被忽略的目录时,用 --hidden 和 -u/-uu/-uuu 逐级放宽。

注意 ripgrep 默认不使用 PCRE2,若需要后行断言等特性要加 -P(构建时需启用)。搜索压缩包内容需加 -z。它的退出码与 grep 类似:0 表示有匹配,1 表示无匹配,2 表示出错,便于脚本判断。

语法

rg [选项] 模式 [路径...]

选项

  • -i:忽略大小写
  • -S:智能大小写(有大写字母时区分)
  • -w:只匹配完整单词
  • -F:把模式当作固定字符串
  • -l:只列出包含匹配的文件名
  • -n / -N:显示 / 隐藏行号
  • -A/-B/-C <行数>:显示匹配后 / 前 / 前后文
  • -g <glob>:按文件名过滤
  • -t <类型> / -T <类型>:包含 / 排除文件类型
  • --hidden:搜索隐藏文件
  • -u:不遵守 ignore 规则(可叠加到 -uuu)
  • -o:只输出匹配到的部分
  • -r <替换>:以替换文本输出匹配
  • -P:使用 PCRE2 正则引擎

实例

# 在当前项目里搜索函数名
rg 'def main\('

# 忽略大小写并只搜 Python 文件
rg -i -t py 'timeout'

# 列出包含 TODO 的文件
rg -l 'TODO|FIXME'

# 显示匹配前后各两行
rg -C 2 'connection refused'

# 搜索隐藏文件与 .gitignore 忽略的内容
rg -uu 'secret'

# 用 glob 排除测试目录
rg 'panic!' -g '!**/test/**'

# 只输出匹配文本并去重
rg -o '\b[A-Z]{3}-\d+\b' | sort -u

# 统计每个文件的匹配行数
rg -c 'error' --sort path

参考链接