Findstr:在txt文件的文件夹中搜索字符串列表

Findstr: Search list of strings in folder of txt files

我正在尝试使用 FINDSTR 搜索充满文本文件的文件夹,使用字符串文本文件,然后输出到 results.txt

字符串文本文件包含 3,200 行,每行包含作者姓名和相关书名。示例:

George Orwell 1984
H. G. Wells War of the Worlds
Isaac Asimov I, Robot

我还有一个文件夹,其中包含十几个电子书文件名的文本列表(有些列表超过 500K 行。),例如:

George Orwell - 1984 (epub).rar
H G Wells - War of the Worlds (pdf).rar
Isaac Asimov - [Robot 0.1] - I, Robot (Mobi).rar

我需要在文件名的文本文件中搜索 3,200 个作者和标题,并将结果输出到第三个文本列表。

文件名还包含系列信息、格式等其他内容,因此我正在寻找包含这些作者姓名和标题但与搜索字符串不完全匹配的任何行,如我上面的示例所示。

这是我试过的。它可以准确匹配字符串,但我看不出如何让它找到包含其他内容的文件名以及搜索字符串中的所有单词。

findstr /g:C:\strings.txt *.txt >>C:\results.txt

任何人都可以帮我解决代码问题。谢谢

在文件中查找需要正则表达式搜索,因为 strings.txt 中的字符串在 *.txt 文件中不存在 1:1。

需要将strings.txt中的字符串从

George Orwell 1984
H. G. Wells War of the Worlds
Isaac Asimov I, Robot

George.*Orwell.*1984
H.*G.*Wells.*War.*of.*the.*Worlds
Isaac.*Asimov.*I.*Robot

这可以通过在支持 Perl 正则表达式的文本编辑器中打开 strings.txt 并从文件顶部 运行 将 Perl 正则表达式全部替换为搜索字符串 [^\w\r\n]+ 来完成并替换字符串 .*。搜索表达式导致搜索一个或多个不是单词字符、回车符 return 或换行符的字符。

那么可以使用:

findstr /I /R /G:C:\Temp\strings.txt *.txt >>C:\Temp\results.txt

strings.txtresults.txt 不应位于包含由 FINDSTR 搜索的 *.txt 文件或与 [=20 不同的文件扩展名的当前目录中=]用于这两个文件。

在当前目录的所有文本文件中查找一些字符串并将结果存储在文件中:

for %i in (*.txt) do (find /i "giff" < "%i" && (echo : %i & echo -)) >> results.txt

已在 Win 10 中测试