参考资料
目录
- [一. 简介](#一. 简介)
- [二. 和grep相同的配置项](#二. 和grep相同的配置项)
- [三. 特有的配置项](#三. 特有的配置项)
-
- [3.1 `--no-heading`](#3.1
--no-heading) - [3.2 `--no-line-number`](#3.2
--no-line-number) - [3.3 `-t`](#3.3
-t) - [3.4 `-g`](#3.4
-g) - [3.5 `--files`](#3.5
--files) - [3.6 `-z` ⇔ `--search-zip`](#3.6
-z⇔--search-zip)
- [3.1 `--no-heading`](#3.1
- [四. 注意事项](#四. 注意事项)
-
- [4.1 `-E`](#4.1
-E)
- [4.1 `-E`](#4.1
一. 简介
🔷rg 是 ripgrep 的命令行工具,可用来替代传统的grep命令。
- 默认使用递归检索
bash
rg [选项] PATTERN [PATH]
🔷rg 默认会自动忽略
.git/.ignore.gitignore→ 如果文件中有下面这些文件夹的话,在搜索时也会被忽略target/logs/node_modules/
二. 和grep相同的配置项
| 配置项 | 解释 |
|---|---|
-i, --ignore-case |
不区分大小写 |
-F, --fixed-strings |
不使用正则检索 |
-v, --invert-match |
除外 |
-n, --line-number |
显示行号 |
-c, --count |
显示文件内的配置数 |
-l, --files-with-matches |
仅显示匹配到的文件名 |
-L, --files-without-match |
仅显示非匹配到的文件名 |
-o, --only-matching |
仅显示匹配到的部分 |
-A N, --after-context=N |
显示匹配行的后N行 |
-B N, --before-context=N |
显示匹配行的前N行 |
-C N, --context=N |
显示匹配行的前后N行 |
-e, --regexp |
搜索多个关键字 |
-P, --pcre2 |
使用 PCRE2 正则引擎 |
-x, --line-regexp |
整行匹配 |
-H, --with-filename |
强制显示文件名 |
三. 特有的配置项
3.1 --no-heading
🔷文件名和匹配内容在一行显示
bash
PS E:\cbc> rg -H 1.15 ./cbc.iml
./cbc.iml
120: <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
PS E:\cbc>
PS E:\cbc> rg -H 1.15 --no-heading ./cbc.iml
./cbc.iml:120: <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
PS E:\cbc>
3.2 --no-line-number
🔷不显示行号
bash
PS E:\cbc> rg 1.15 ./cbc.iml
120: <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
PS E:\cbc>
PS E:\cbc> rg 1.15 --no-line-number ./cbc.iml
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
PS E:\cbc>
3.3 -t
🔷只检索指定后缀的文件
- 查看支持的所有文件后缀
bash
PS E:\cbc> rg --type-list | head
ada: *.adb, *.ads
agda: *.agda, *.lagda
aidl: *.aidl
alire: alire.toml
amake: *.bp, *.mk
asciidoc: *.adoc, *.asc, *.asciidoc
asm: *.S, *.asm, *.s
asp: *.ascx, *.ascx.cs, *.ascx.vb, *.asp, *.aspx, *.aspx.cs, *.aspx.vb
ats: *.ats, *.dats, *.hats, *.sats
avro: *.avdl, *.avpr, *.avsc
- 只检索java文件
bash
PS E:\cbc> rg --no-heading -t java "贾飞天" . | head -n 3
.\src\main\java\com\example\jmw\thread_service\ThreadService2.java: put("姓名", "贾飞天");
.\src\main\java\com\example\jmw\controller\Test14Controller.java: test14SubForm1.setName("贾飞天");
.\src\main\java\com\example\jmw\controller\Test19Controller.java: put("name", "贾飞天");
3.4 -g
🔷给搜索增加过滤条件
- 排除任意路径中的
controller文件夹
bash
PS E:\cbc> rg --no-heading -g "!**/controller/**" -t java "@Service" .
.\src\main\java\com\example\jmw\thread_service\ThreadService2.java:10:@Service
.\src\main\java\com\example\jmw\thread_service\ThreadService1.java:8:@Service
.\src\main\java\com\example\jmw\aspect\service\J003BusinessService.java:12:@Service
.\src\main\java\com\example\jmw\aspect\service\J002BusinessService.java:6:@Service
.\src\main\java\com\example\jmw\service\ZTestService.java:13:@Service
.\src\main\java\com\example\jmw\aspect\service\CommonService.java:13:@Service
.\src\main\java\com\example\jmw\service\VipUserCart.java:11:@Service("VipUserCart")
.\src\main\java\com\example\jmw\service\Test5Service.java:13:@Service
.\src\main\java\com\example\jmw\service\Test4Service.java:17:@Service
- 排除任意路径中的
target文件夹 - 仅检索
yml文件
bash
PS E:\cbc> rg --no-heading -g "!**/target/**" -g "*.yml" "url" .
.\src\main\resources\application-product.yml:3: url: jdbc:mysql://localhost/myblog?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
.\src\main\resources\application-test.yml:5: jdbc-url: jdbc:mysql://localhost/myblog?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
.\src\main\resources\application-test.yml:11: jdbc-url: jdbc:mysql://localhost/pythonblog?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
.\src\main\resources\application-dev.yml:5: url: jdbc:mysql://localhost/myblog?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
3.5 --files
🔷列出当前文件夹下的所有的yml文件
bash
PS E:\cbc> rg --files -g '*.yml' .
.\target\classes\application-product.yml
.\target\classes\application.yml
.\target\classes\application-dev.yml
.\target\classes\application-test.yml
.\src\main\resources\application.yml
.\src\main\resources\application-test.yml
.\src\main\resources\application-product.yml
.\src\main\resources\application-dev.yml
3.6 -z ⇔ --search-zip
🔷注意:rg -z 只支持【单文件压缩格式】,不支持像.zip这样的容器。
目前支持这些单文件压缩格式:gzip、bzip2、xz、LZ4、LZMA、Brotli、Zstd。
bash
apluser@FengYeHong-HP:20260504$ zgrep -a "MCP" AI.zip
3. MCP
apluser@FengYeHong-HP:20260504$ rg -z "MCP" AI.zip
apluser@FengYeHong-HP:20260504$
apluser@FengYeHong-HP:20260504$ rg -z "MCP" AI.txt.gz
9:3. MCP
apluser@FengYeHong-HP:20260504$
四. 注意事项
4.1 -E
rg中,-E表示指定文件编码(Encoding)grep中,-E表示ERE正则