【问题标题】:Searching multiple files for multiple words在多个文件中搜索多个单词
【发布时间】:2012-08-31 13:00:22
【问题描述】:

我必须搜索大量的.txt 文件。我知道我可以进行多个单词搜索,但这是我的问题。我希望我的结果仅是包含搜索条目的所有单词的 .txt 文件。

例如:

文件 1:

test1

文件 2:

 test1
 test2

搜索 test1 和 test2 的文件只会显示文件 2。

希望有人可以帮助我。 谢谢

【问题讨论】:

  • 您的搜索条目中有多少字?您可以使用 grep:stackoverflow.com/a/5915770/1423890
  • 您要识别包含所有单词的文件,还是要查找包含所有单词的行?这是 Perl 中的一项简单任务,类似于 perl -ne "print if m/one/ && m/two/ && m/three/" *.txt。

标签: notepad++


【解决方案1】:

如果您使用的是 Notepad++ 编辑器(如问题标签所示),您可以使用出色的“在文件中查找”功能。

转到Search > Find in Files(Ctrl+Shift+F 键盘上瘾)并输入:

  • 查找内容 = (test1|test2)
  • 过滤器 = *.txt
  • Directory = 输入您要搜索的目录的路径。您可以检查Follow current doc. 以获取要填充的当前文件的路径。
  • 搜索模式 = Regular Expression

【讨论】:

  • 有没有办法将输入文件中的字符串列表用作“查找内容”并在文件夹下的文件列表中搜索。输出将是针对输入文件中每个字符串的文件列表。
  • 不使用记事本++。不过,几行脚本(Python 或 Perl)就可以完成这项工作。如果您需要帮助,请告诉我编写它
  • 当它不应该找到文件 1 时,这肯定会找到吗?
  • @Lilienthal 你是什么意思?
  • @Jean-FrancoisT。 OP 正在寻求一种方法来搜索其中包含 test1 和 test2 的文件。文件 1 仅包含 test1 并且不应该是热门,但使用 | 是。我想((test1.*test2)|(test2.*test1)) 可能会起作用,但这并不能很好地扩展。
【解决方案2】:

如果您使用的是 Notepad++ 编辑器 转到 ctrl + F 选择选项卡 3 在文件中查找并输入:

  1. 查找内容 = text1*.*text2
  2. 过滤器:.
  3. 搜索模式 = 正则表达式
  4. Directory = 输入您要搜索的目录的路径。您可以检查 Follow current doc。填充当前文件的路径。

【讨论】:

  • 如果text1 出现在text2 之后,这将不起作用,这就是为什么原始问题有更好的正则表达式。
  • 另外,我修复了您的格式,请注意下次您在 Stack Overflow 上发布格式的工作方式。
  • 是的,但您可以更改 Find What = text2*.*text1。我认为它真正更好 text1|text2
  • 是的,我明白了。这是我第一次在 stackoverflow 上回答问题
  • 如果你改变它,它不会反过来工作。另一个答案是唯一有意义的答案。
【解决方案3】:

这是另一种“如果你使用 X”的解决方案,但如果你使用 GitHub,你可以使用搜索栏在你的存储库中查找代码。然后它将列出与该代码部分匹配的文件。

【讨论】:

  • 您能否解释一下如何按照问题的要求进行搜索。只是说“使用 GitHub” 并不能回答问题。
  • 我认为它在 GitHub 本身中显示的非常简单,这就是我没有解释清楚的原因。如果您打开自己的 GitHub 存储库(或其他人),那么您将在左上方(或中右上方,如果未登录)看到搜索栏。在这里您编写要搜索的代码部分,然后从出现的菜单中选择“在此存储库中”。它会将您重定向到包含存储库中列出的元素的站点,首先是代码(以及出现搜索代码的文件)。我发现的唯一限制:您无法搜索更长的代码片段,因此它将您限制为单行。
  • 最初的问题不是一般的如何进行搜索,而是关于如何搜索特定的一组文本项。这就是为什么这个问题很有趣。您的回答完全回避了原问题的重点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 2021-04-01
  • 2015-08-20
  • 2015-07-13
  • 1970-01-01
相关资源
最近更新 更多