如何在 Linux 中搜索多个文件中的文本

对于 Linux 用户来说,在一个或多个文件中搜索单词的需求经常会出现。

 

有许多不同的应用程序都可以很好地完成这项工作。哪一个应用程序最适合您取决于您的需求和偏好。这些应用程序主要通过以下特征来区分:

  • 命令行工具 vs. 带图形界面的工具。
  • 它们是只能在文本文件中搜索,还是也能在所有常用文档类型中搜索。
  • 它们是否使用索引。

 

在本文中,我们将为您介绍不同类型的搜索应用程序,以便您可以选择最适合自己的一款。

 

注意:如果您是 Mac 用户,可以查看我们的文章 如何在 Mac 上搜索

 

 

1. 使用 grep 工具搜索文本文件

 

关于 grep 工具

 

在 Linux 中,最受欢迎的命令行文本搜索工具是 grep。它创建于 45 多年前!其开发者是美国计算机科学家 Ken Thompson。

 

Grep 可以搜索各种文本文件(.txt、.html、.xml 等),但不能搜索 OpenOffice 文件、PDF 文件等其他类型的文档。

 

事实上,根据 Hostinger 的说法,grep 命令位列 Linux 中最常用命令的前 15 名。

 

Top 15 most used commands in Linux

 

该工具受 UNIX、Linux 和 Mac 操作系统支持。

 

还有一个适用于 Windows 的 grep 替代方案,名为 findstr,您可以在我们的文章 如何在 Windows 10 中搜索文件 中了解更多信息。

 

 

如何使用 grep 工具

 

grep 工具内置于操作系统中,因此您无需安装它。

 

使用 grep 命令在单个文件中查找字符串的最简单语法是:
grep 'searched-word' filename

 

默认情况下,grep 搜索区分大小写。

 

让我们逐步为搜索添加最有用的选项。

 
1. 使用 “-i” 选项使搜索不区分大小写:
grep -i 'searched-word' filename

 
2. 使用 “-r” 选项递归搜索指定目录中的所有文件:
grep -ir 'searched-word' '/directory'

 
3. 使用 “-w” 选项仅搜索完整单词:
grep -irw 'searched-word' '/directory'

 
4. 使用 “-n” 选项输出找到目标单词的行号:
grep -irwn 'searched-word' '/directory'

 
5. 搜索多个单词的语法:
grep -ir 'word1|word2|word3' '/directory'

 

更多有用的 grep 选项可在官方 Grep Manual 中找到。

 

 

grep 工具的优点和缺点

 
像任何软件工具一样,grep 在带来便利的同时也有一些缺点。让我们总结一下它的优缺点。
 

优点:

  • 通过广泛的选项提供极高的灵活性。
  • 能够高效处理正则表达式。
  • 内置于操作系统中。

 

缺点:

  • 除文本文件外,无法搜索其他任何类型的文档。
  • 没有图形界面。
  • 结果中较长文本行的阅读较为困难。
  • ack 相比,在源代码搜索方面没那么强大。

 
 

2. SearchMonkey

SearchMonkey 是一款适用于 Linux 操作系统的免费开源 GUI 应用程序,它利用了 grep 工具的功能。SearchMonkey 也适用于 Windows 和 Mac 用户。

 

除了搜索文本文件之外,SearchMonkey 还支持:

  • OpenOffice 和 LibreOffice 文件(.odt)。
  • Microsoft Office 文件(.docx)。
  • PDF 文件(.pdf)。

 

该工具可以递归搜索目录,并返回文件名以及您搜索内容的高亮显示片段。

 

按照以下步骤安装并使用该工具:
 
1. 在终端中使用以下命令安装应用程序:
sudo apt install searchmonkey
 
2. 启动应用程序。
 
3. 选择要搜索的文件夹。
 
SearchMonkey choose a folder to search
 
4. 勾选 “Containing” 复选框,输入搜索词并按 “Enter”。
 
SearchMonkey check containing checkbox to prepare it for search
 
5. 单击左侧窗格列表中的文件,即可查看找到的文本片段。
 
SearchMonkey click on a file to see the passages found

 

如果您想搜索特定目录,请单击 “Advanced” 选项卡并选择所需文件夹。

 

在 “Advanced” 窗格中,您可以使用附加条件来筛选结果,例如文件大小、最后修改日期等。

 

SearchMonkey use advanced search

 

使用 SearchMonkey,您还可以像在 grep 工具中一样使用正则表达式。
 

优点:

  • 完全免费且开源。
  • 轻量且易于使用。
  • 不使用索引。
  • 提供许多用于细化搜索的选项。
  • 支持正则表达式。

 

缺点:

  • 性能较慢,不适合大型目录。
  • 不支持 RTF、Excel(.xlsx、.xls)、PowerPoint(.pptx、.ppt)、旧版 Word(.doc)以及其他流行文档类型。
  • 无法搜索出现在同一句中的单词组合。
  • 不会在一个地方显示所有结果行,您必须逐个检查文件。

 

 

 

3. Recoll

Recoll 是一款桌面搜索工具,适用于 Linux、Windows 和 MacOS。Linux 版本免费。它不仅可以搜索文本文件,还可以搜索大多数常见文档格式,包括:

  • OpenOffice 和 LibreOffice 文件(.odt)。
  • Microsoft Office 文件(.docx、.xlsx、.xls、.ppt)。
  • PDF 文件(.pdf)。
  • AbiWord 文件(.abw)。

 

默认情况下,Recoll 会为您 “home” 目录中的文件建立索引,这可能需要一些时间。

 

以下是安装和使用该程序的步骤:
 
1. 使用以下命令安装 Recoll:
sudo apt-get install recoll
 
2. 启动应用程序。
 
3. 在 “First indexing setup” 窗口中单击 “Start indexing now”。
 
Recoll start indexing your files and folders
 
4. 在 “Missing helper programs” 消息框中单击 “OK”。
 
Recoll next step for indexing
 
5. 输入搜索词并按 “Enter”。

 

6. 在结果列表中,单击 “snippets” 以查看所有包含搜索词的文本片段。
 
Recoll see passages of text found

 

7. 在 “Snippets” 窗口中,您可以看到搜索词所在的页面和行。
 
Recoll see the pages and the lines containing your search words

 

如果您需要在 “home” 目录之外的文件夹中搜索,请转到 “File” -> “Special indexing”,然后单击 “Browse” 按钮选择所需目录。

 

优点

  • 对 Linux 用户免费。
  • 支持大多数常见文档类型。
  • 图形界面易于使用。
  • 支持高级搜索选项。
  • 无需打开文件即可预览文档。

 

缺点

  • 尽管该应用程序使用了索引,但搜索速度仍相对较慢。
  • 不支持 Word 97-2003 “.doc” 格式,也不支持 PowerPoint “.pptx” 文件格式。
  • 无法搜索单词组合。
  • 您必须点击每个结果的 “snippets” 才能看到找到的片段。

 

 

4. DocFetcher

DocFetcher 是一款免费开源的桌面搜索工具,适用于 Linux、Windows 和 MacOS。除了文本文件格式外,它还支持您可能会使用的几乎所有文档格式:

  • Microsoft Office 97-2003 文件(.doc、.xls、.ppt)。
  • Microsoft Office 2007-365 文件(.docx、.xlsx、.pptx、.docm、.xlsm、.pptm)。
  • Microsoft Outlook 电子邮件文件(.pst)。
  • OpenOffice 文件(.odt、.ods、.odg、.odp、.ott、.ots、.otg、.otp)。
  • PDF 文件(.pdf)。
  • 富文本格式(.rtf)。
  • AbiWord 文件(.abw、.zabw)。
  • 以及其他格式。

 

以下是使用 DocFetcher 的简要说明:
 
1. 使用以下命令安装 DocFetcher:
sudo snap install docfetcher

 

2. 启动 DocFetcher
 

3. 在左下角的 “Search Scope” 窗格中单击右键,然后选择 “Create index from”->“Folder”。
 
DocFetcher Linux create an index of files and folders

 

4. 选择一个文件夹,为索引命名,然后单击 “Run” 按钮。
 
DocFetcher Linux choose a folder to search

 

5. 等待索引创建完成。准备就绪后,您会在左侧的 “Search Scope” 窗格中看到一个勾号。
 
DocFetcher Linux see folders that are indexed
 
6. 输入搜索词并按 “Enter”。

 

DocFetcher Linux type words to search for
 
7. 单击文件名即可查看包含搜索词的文本片段。您可以使用 “up” 和 “down” 箭头在结果中导航。
 
DocFetcher Linux see passages found

 

优点

  • 免费开源应用程序。
  • 它有便携版。
  • 可以搜索压缩包格式(.zip、.7z、.rar、.tar)。
  • 提供附加搜索选项——通配符、相似词、邻近搜索等。

 

缺点

  • 对于大型文件夹,创建索引可能需要很长时间。
  • 无法执行不区分大小写的搜索。
  • 文本结果中的导航不够友好。
  • 无法搜索句子中的单词组合。

 

 

5. Regexxer

 

regexxer 应用程序为使用 perl 风格正则表达式提供了丰富的可能性。它是一款免费开源、具有用户友好图形界面的应用程序,创建于 2002 年。

 

Regexxer 仅适用于 Linux,并且您可以在 Debian 和 Ubuntu 上最方便地安装它。

 

以下是使用 Regexxer 的方法:
 

1. 使用以下命令安装应用程序:
sudo apt-get install regexxer
 
2. 启动应用程序,选择搜索文件夹,并确保选中 “recursive” 复选框。
 

3. 单击 “Find files” 按钮。
 
Regexxer start your search

 

4. 在 “Search” 框中输入搜索词,然后单击 “Find” 按钮。
 
Regexxer type your search words
 
5. 使用底部的箭头在结果中导航。
 
Regexxer navigate the results found
 
6. 在左侧窗格中,您可以看到相应文件中的结果数量;在右侧窗格中,可以看到包含搜索词的文本。

 

优点:

  • 完全免费且开源。
  • 易于安装和使用。
  • 图形界面简洁直观。
  • 支持所有类型的 perl 风格正则表达式。
  • 在结果中高亮显示搜索词。
  • 不使用索引。

 

缺点:

  • Regexxer 比其他类似应用程序更慢。
  • 有时会无响应或意外关闭。
  • 除文本文件外,无法搜索其他任何类型的文档。
  • 无法搜索出现在同一句中的单词组合。

 

 

结论

希望您喜欢这份关于在 Linux 中查找文本文件的指南。

 

我完全清楚,对于文中介绍的这些应用程序,还可以补充更多内容,而且这个领域还有许多其他有用的工具。

 

现在我想听听您的看法:在本文介绍的这些应用程序中,哪一个对您最有用?您在使用这些工具时遇到过什么问题吗?您还想补充这一主题下其他重要的内容吗?

 

欢迎在下方评论区发表评论,告诉我您的想法。

关于作者
Dimitar Stamenov 是一位软件开发者和企业家,在科技领域拥有超过 25 年的经验。他创建了 SeekFast(最受欢迎的桌面搜索应用之一)、Preslav ERP(企业业务管理系统)和 SEORanks(备受青睐的 SEO 工具网站)等工具。他还曾在领先的技术学院授课,包括 Telerik Academy 和 Software University Sofia。

在 SeekFast 博客中,Dimitar 分享技巧、想法和实用解决方案,帮助读者充分利用他们的软件,更高效地完成工作。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注