我需要搜索文本文件的目录,其中也搜索文件的内容。我目前正在使用 ripgrep 和 fzf 来执行此操作 - 问题是每个文件的每一行都会输出搜索。我需要每个搜索匹配项也指示其源文件名/文件路径。
我们有以下两个文件:
某事 某事 foo 某事
某事 某事 foo 某事
某事 某事 foo 某事
某事 某事 foo 某事
某事 某事 foo 某事
我们rg . | fzf在包含它们的目录中运行,写入 foo,并得到以下结果:
有用的示例.md:某事某事foo某事
example.md:某事某事foo某事
example.md:某事某事foo某事
example.md:某事某事foo某事
example.md:某事某事foo某事
这里的问题是 example.md 的每一行都是一个搜索结果。它应该是引用其文件的匹配项。它应该看起来像这样:
有用的示例.md:某事某事foo某事
example.md:某事某事foo某事
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
Ripgrep 带有一个--heading标志(来自手册页)
在每个文件的匹配簇上方打印文件路径,而不是将文件路径打印为每个匹配行的前缀
它看起来像这样:
rg --heading --line-number --column . | fzf --layout=reverse
useful-example.txt
1:1:something something foo something
example.txt
1:1:something something foo something
2:1:something something foo something
3:1:something something foo something
4:1:something something foo something
Run Code Online (Sandbox Code Playgroud)
如果您只对匹配的文件感兴趣,请添加标志--files-with-matches:
rg --files-with-matches . | fzf
useful-example.txt
example.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2845 次 |
| 最近记录: |