ripgrep
1. rg 是什么
rg 是 ripgrep 的命令行搜索工具,主要用于在代码工程中快速搜索文本、函数名、变量名、配置项、报错信息等。
它可以理解为更快、更适合代码仓库的 grep。
主要特点:
- 默认递归搜索当前目录。
- 默认跳过
.gitignore中忽略的文件和目录。 - 默认跳过
.git/、build/、node_modules/等无关内容。 - 支持正则表达式。
- 搜索速度快,适合大型代码仓库。
- 输出默认包含文件名、行号和匹配内容。
2. 安装
Ubuntu / Debian:
1 | |
检查是否安装成功:
1 | |
3. 基本用法
在当前目录搜索关键词:
1 | |
示例:
1 | |
在指定目录搜索:
1 | |
示例:
1 | |
搜索函数名、变量名、类名:
1 | |
4. 常用参数
忽略大小写:
1 | |
只显示匹配到的文件名:
1 | |
统计每个文件中的匹配次数:
1 | |
显示匹配行前后上下文:
1 | |
只显示匹配行前 3 行:
1 | |
只显示匹配行后 3 行:
1 | |
搜索隐藏文件:
1 | |
搜索被 .gitignore 忽略的文件:
1 | |
更强制地搜索所有内容:
1 | |
一般日常开发中,-u 通常已经足够。
5. 按文件类型搜索
搜索 C++ 文件:
1 | |
搜索 Python 文件:
1 | |
搜索 Markdown 文件:
1 | |
搜索 CMake 文件:
1 | |
常见类型:
1 | |
6. 按文件后缀搜索
搜索 .cpp 文件:
1 | |
搜索 .hpp 文件:
1 | |
搜索 .launch 文件:
1 | |
搜索 .yaml 文件:
1 | |
搜索多个类型:
1 | |
7. 排除目录或文件
排除 build 目录:
1 | |
排除多个目录:
1 | |
8. 查找文件名
列出当前目录下所有文件:
1 | |
查找某个文件:
1 | |
查找所有 launch 文件:
1 | |
查找配置文件:
1 | |
查找某个 CMake 配置文件:
1 | |
9. 排查报错时的用法
遇到编译错误时,直接搜索报错关键词:
1 | |
遇到运行时报错:
1 | |
遇到库找不到:
1 | |
遇到参数不生效:
1 | |
例如:
1 | |
10. 和 grep 的对比
传统写法:
1 | |
推荐使用:
1 | |
rg 的优势是:
- 命令更短。
- 默认递归搜索。
- 默认显示行号。
- 默认跳过无关目录。
- 在大型工程中速度更快。
- 输出更适合代码阅读。
11. 推荐常用命令组合
日常搜索:
1 | |
指定文件类型:
1 | |
查看上下文:
1 | |
只看文件名:
1 | |
查找文件:
1 | |
ROS 工程排除构建目录:
1 | |
强制搜索隐藏文件:
1 | |
搜索所有文件,包括被忽略的文件:
1 | |
12. 速查表
| 目的 | 命令 |
|---|---|
| 搜索关键词 | rg "keyword" |
| 指定目录搜索 | rg "keyword" /path/to/dir |
| 忽略大小写 | rg -i "keyword" |
| 显示上下文 | rg -C 3 "keyword" |
| 只显示文件名 | rg -l "keyword" |
| 搜索指定后缀 | rg "keyword" -g "*.cpp" |
| 排除目录 | rg "keyword" -g "!build" |
| 搜索隐藏文件 | rg --hidden "keyword" |
| 搜索被忽略文件 | rg -u "keyword" |
| 列出所有文件 | rg --files |
| 查找文件名 | `rg –files |
核心记忆:
1 | |
ripgrep
http://example.com/2026/04/28/ripgrep/