标签: ripgrep

grep 或 ripgrep:如何仅查找与多个模式匹配的文件(不仅在同一行)?

我正在寻找一种快速方法来查找包含 2 个或更多模式的文件夹中的所有文件

grep -l -e foo -e bar ./* 或者 rg -l -e foo -e bar

显示同一行中包含“foo”和“bar”或不同行中包含“foo”或“bar”的所有文件,但我只想要在不同行中至少有一个“foo”匹配和一个“bar”匹配的文件。仅包含“foo”匹配或仅包含“bar”匹配的文件将被过滤掉。

我知道我可以链接 grep 调用,但这太慢了。

grep ripgrep

18
推荐指数
4
解决办法
1万
查看次数

Ripgrep 仅排除文件夹根目录中的文件

如果我有这样的文件夹:

\n
dir:\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 1.index1.html\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 2.index2.html\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 3.index3.html\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 a\n    \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 1.index1.html\n    \xe2\x94\x82   \n\n
Run Code Online (Sandbox Code Playgroud)\n

如何在命令中告知仅排除根文件夹中的ripgrep文件,但仍搜索in 文件夹?index1.htmlindex1.htmla

\n

shell grep ripgrep

16
推荐指数
1
解决办法
1万
查看次数

是否可以将 Rg 的结果显示到快速修复窗口中?

当我搜索时:Rg <string>,它正在 FZF 缓冲区中打开结果。文件名通常不会完全显示在其中。而且一旦逃脱,结果就消失了。如果需要再次检查同一个单词,我必须进行研究。

:vim /pattern/g **/*在快速修复中打开结果。有没有办法在quickfix窗口中打开Rg结果?如何显示Rg缓冲区中的完整文件名?

vim vim-quickfix ripgrep

11
推荐指数
2
解决办法
2544
查看次数

使用 ripgrep 搜索单词的开头/结尾

grep我可以搜索单词的开头和结尾

grep -e '\<leg\>' <where to search>
Run Code Online (Sandbox Code Playgroud)

这会找到I have a leg.但不会play allegro here

Ripgrep (0.10.0) 似乎不支持这种写正则表达式的方式。我的问题是:

如何“grep”出现在单词的开头/结尾ripgrep

ripgrep

9
推荐指数
1
解决办法
1381
查看次数

慢性 ripgrep / vim 插件加载时出错:“-completeused without-nargs”?

我最近将ripgrep添加到了我的vim 插件列表中,安装后,每当我加载 vim 时,我就开始收到此错误消息:

Error detected while processing /Users/my_macbook/.vim/plugged/vim-ripgrep/plugin/vim-ripgrep.vim:

line  149: E1208: -complete used without -nargs
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)

打开有问题的文件并查看第 148-149 行可以发现:

148 command! -nargs=* -complete=file Rg :call s:Rg(<q-args>)
149 command! -complete=file RgRoot :call s:RgShowRoot()
Run Code Online (Sandbox Code Playgroud)

我真的超出了我的深度,特别是考虑到这个错误是通过简单安装插件生成的;我对底层文件 ( vim-ripgrep.vim) 进行了 0 处更改。

有没有人在安装 ripgrep 后遇到类似的长期错误,如果是的话,你是如何解决的?

regex vim vim-plugin ripgrep

9
推荐指数
2
解决办法
2260
查看次数

如何使用 ripgrep 和 fzf 模糊查找包含特定文本的所有文件并打开它 VSCode

我有以下命令可以在命令行中模糊查找文件并在 VSCode 中打开所选文件:

fzf --print0 -e | xargs -0 -r code
Run Code Online (Sandbox Code Playgroud)

现在我希望能够在文件内容中搜索字符串。我可以在命令行中找到搜索的字符串:

rg . | fzf --print0 -e
Run Code Online (Sandbox Code Playgroud)

vscode_console_ripgrep_fzf_string_search.png

但现在使用以下命令在 VSCode 中打开文件不再起作用:

rg . | fzf --print0 -e | xargs -0 -r code
Run Code Online (Sandbox Code Playgroud)

因为 VSCode 传递了一个文件名,其中包含文件名本身和搜索字符串(当然是一个空文件)。

如何组合上述两个命令将文件名传递给包含搜索字符串的 VSCode?

command-line xargs visual-studio-code fzf ripgrep

8
推荐指数
1
解决办法
1万
查看次数

vscode 启动的许多 rg 命令消耗了 99% 的 CPU

我正在一个非常大的 github 存储库中工作,假设它的结构是这样的

\n
project-root\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project-1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subproject-a\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 subproject-others\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 project-2\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subproject-b\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 subproject-others\n
Run Code Online (Sandbox Code Playgroud)\n

有很多项目,每个项目又包含很多子项目。我正在研究其中一个子项目(例如subproject-a)。当我在子项目(它是一个 python 子项目)中打开 vscode 时,我注意到它启动了许多rg如下命令,并且我的 CPU 使用率超过 99%。我想知道这些 rg 命令是关于什么的?他们只是在子项目中搜索内容,还是在包含数万个文件的整个 git 存储库中搜索内容?为什么他们要消耗这么多资源?请问我怎样才能避免这种情况?

\n
\n

/Applications/Visual Studio Code.app/Contents/Resources/app/node_modules.asar.unpacked/vscode-ripgrep/bin/rg --files --hidden --case-sensitive -g **/*.go/** -g **/*.go -g !**/.git -g !**/.svn -g !**/.hg -g !**/CVS -g !**/.DS_Store -g !**/.classpath -g !**/.factorypath -g !**/.project -g !**/.settings -g !**/node_modules -g !**/bower_components -g !**/*.code-search --no-ignore-parent --follow --quiet --no-config --no-ignore-global

\n
\n

python git visual-studio-code ripgrep

7
推荐指数
1
解决办法
8162
查看次数

ripgrep 查找包含多个单词(可能位于不同行)的文件?

如果我有这样的文件:

cat file1.txt
foo
bar
Run Code Online (Sandbox Code Playgroud)
cat file2.txt
foo
baz
Run Code Online (Sandbox Code Playgroud)
cat file3.txt
bar
baz
Run Code Online (Sandbox Code Playgroud)

ripgrep (或类似)上是否有一个命令可以搜索包含 foo 和 bar 的文件?例如,它将显示 file1.txt 但不显示其他两个文件?(注意 foo 和 bar 可能不在同一行。)

然后第二个问题,为了变得更奇特,我可以使用一些语法来计算带有 foo 的文件,但如果它们也包含 bar 则排除它们吗?例如,它只会显示 file2.txt?

谢谢!

search grep ripgrep

7
推荐指数
2
解决办法
3308
查看次数

Ripgrep缺少角色类别和重复

这些为什么匹配:

echo 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAGTTC' | grep -E 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAG[ATCG]{2}C'
echo 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAGTTC' | rg 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAG[ATCG]{1,2}C'
echo 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAGTTC' | rg 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAG[ATCG]{2,}C'
echo 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAGTTC' | awk '$0 ~ /CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAG[ATCG]{2}C/'
Run Code Online (Sandbox Code Playgroud)

但这不是:

echo 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAGTTC' | rg 'CCAGCTACTCGGGAGGCTGAGGCTGGAGGATCGCTTGAGTCCAGGAG[ATCG]{2}C'
Run Code Online (Sandbox Code Playgroud)

我的印象是ripgrep使用了rust regex引擎,该引擎应该能够处理字符类+重复?

regex ripgrep

6
推荐指数
1
解决办法
155
查看次数

有没有办法在 ripgrep 中为 MS Windows(Powershell 或 CMD)转义引号?

我想"Hello在文本文件中找到一个字符串(Hello 以双引号开头)ripgrep

通常,在 Bash 或 ZSH 中,这可以通过使用反斜杠转义或用单引号括起来来实现:

rg \"Hello
rg '"Hello'
Run Code Online (Sandbox Code Playgroud)

但是,在 MS Windows(Powershell 和 CMD)中,我尝试过这些,但没有一个奏效:

rg \"Hello
rg '"Hello'
rg `"Hello
rg '`"Hello'
Run Code Online (Sandbox Code Playgroud)

有没有办法在 MS Windows 中使用 ripgrep 转义单引号或双引号?

powershell cmd ripgrep

5
推荐指数
1
解决办法
1173
查看次数