搜索文件夹和子文件夹中具有 2 个(完整或部分)关键字内容(txt 文件)的文件以及具有特定文件名的文件

搜索文件夹和子文件夹中具有 2 个(完整或部分)关键字内容(txt 文件)的文件以及具有特定文件名的文件

我只是想分享这个,并希望能得到更多类似的工具。

我有一个文本文件目录。我需要搜索其中包含 2 个(部分)单词的文件。关键字按随机顺序排列,但在同一行。

到目前为止,我可以使用这个:

$ rg -i '\w*keyword1\w*.*\w*keyword2\w*|\w*keyword2\w*.*\w*keyword1\w*' --glob '*.txt' --line-number -l /path/to/search

$ rg -g '*.txt' -l -i 'keyword1.*keyword2|keyword2.*keyword1' /path/to/search

这两者都可以完成相同的工作。

还有其他人可以做同样的工作吗?请分享。我发现自己经常需要这个来找到正确的文件。

但是我不知道如何搜索文件名是 2 个不按顺序的关键字的文件。如何使用 2 个不按顺序的关键字搜索文件名?示例: oddfilename_key1Nkey3Nkey2etc.txt 在巨大的数据库中搜索名称只记得由“key2”和“key3”组成的文件,但不确定顺序。

答案1

或许:

rg -iPlg '*{Key1*Key2,Key2*Key1}*.txt' '^(?=.*keyword1)(?=.*keyword2)' dir

使用-P,我们得到具有前瞻运算符的 PCRE 正则表达式,因此我们可以匹配^行的开头,前提是它后面跟着任意数量的字符keyword1,并且后面跟着任意数量的字符keyword2

-g '*{Key1*Key2,Key2*Key1}*.txt'是类似于 csh 大括号扩展-g '*Key1*Key2*.txt -g '*Key2*Key1*.txt'的缩写,{x,y}是对标准 shell glob 模式的 ripgrep 扩展。

相关内容