如何在 Linux 中查找包含特定文本或字符串的文件?

2025年2月28日 | 阅读 6 分钟

引言

假设您正在某个特定目录中探索 Linux,以查找特定文件,但由于某种原因,您似乎不记得文件名了。您只记得文件内容。在这种情况下,您将在哪里查找该文件?即使在 Linux 中工作,也有一些有用的方法可以帮助您搜索包含特定文本(或字符串)的文件。在这种情况下,系统仅接受用户的字符串输入。现在,让我们研究一下通过所有 Linux 文件搜索特定字符串的方法。

How to Find Files for Specific Text or String in Linux?

使用 grep 命令

借助 Linux grep 命令,用户还可以搜索包含特定文本或字符串的文件。在这里,它默认显示包含特定文本的行。如果我们添加 -l 参数,它将列出所有包含上述文本的文件。

示例

假设目录中存在名为 file1.txt 和 file2.txt 的文件。file1.txt 的内容是:Hello World,而 file2.txt 包含 JavaTPoint。当我们使用命令时,我们可以获得必要的信息,例如,如果我们想知道有多少个文件,我们可以使用以下命令:

命令

什么是相对简单?

上述示例是 grep 命令成功扫描 file1.txt 中的字符串。因此,它在屏幕上显示了文件名。还有一个选项可以告诉 grep 不要区分大小写,那就是 -i 选项。

在上面的示例中,之前使用的命令是上面高亮的命令,提供的字符串是 Text。File1.txt 没有被考虑,因为它包含 Text,而不是 text。采用上述约定的原因是为了解释 txt 和 Text 之间的区别。

在这种情况下,搜索会考虑大小写,即评估大小写以得出解决方案。其次,使用了 -i 选项。因此,大小写被忽略,并且生成的字符串 = file1.txt 中可用的字符串。这就是为什么,对用户来说,文件名会显示在屏幕上。

同时使用 find 和 grep 命令

在 Linux 中查找或定位文件的方法是键入 find 命令,后跟 grep 命令。

有一个名为 find 的命令,它也用于 Linux 操作系统。有一个很好的选项叫做 -exec,它将在 find 找到的文件上执行 grep,并且会与 -type f 一起使用以查找文件。

假设 file1。因此,很容易注意到搜索过程会找到包含字符串的 txt。但是,文件名会显示在屏幕上,如上所示。

使用 Midnight Commander 搜索包含特定文本的文件

此外,在搜索文件时,有一个名为 Midnight Commander 的工具,我们可以使用它。对于 Windows 7 键盘,在打开应用程序后按 Alt + Shift + ? 来输入以调出“查找文件”对话框。您会在顶部看到一个“起始”框。

在框中输入文件的路径。接下来,在内容框中输入要搜索的字符串。在我们的例子中,我们搜索了 Files 目录中的 Text;我们搜索了 Files 目录中的 Text。

搜索已成功进行,以找到名为 file 1 的文件。这样的日志可以提供为 txt 文件,并且清楚地包含找到的字符串,如下所示。

使用 ripgrep 命令。

而不是使用 grep 命令,有一个 ripgrep,它写为 rg。如果我们使用该命令获取文件名,我们就会得到文件。

使用 ack 命令

ack 命令的使用被认为是该应用程序的第五种方法。

我们可以使用的下一个命令是“ack”命令。

文件 file1。被指定为 txt 的文件已被找到,现在 Sample txt 已被找到,现在就在窗口中。

描述 Grep 和 find

在 UNIX/Linux 操作系统中,有一个名为 GREP 的命令,用于在包含某些特定匹配模式的文件中查找特定行。它扫描文件,如果处于默认模式,它会搜索文件中的任何出现在行中的字符串。与大多数命令一样,grep 是区分大小写的,尽管可以更改它,使其不区分大小写。

How to Find Files for Specific Text or String in Linux?

使用下面的两个命令来查找包含特定文本字符串的文件。

如果想搜索整个目录以获取文本字符串,可以使用 grep 命令,并将参数设置为 grep -rni "text string" /path/to/directory。

上述命令将列出与提供的文本字符串匹配的内容及其在提供的目录中文件的相应行号。

您可以使用以下命令过滤结果,仅显示文件名而不重复。要处理结果并删除所有重复项,可以使用此命令,该命令有助于仅识别文件名。

要在目录中搜索特定的文本字符串,请输入给定命令。

命令

当与去除任何重复数据结合使用时,此命令将生成一个包含给定文本字符串的文件名列表。

此外,另一个称为 find 的实用命令在文件搜索操作中经常使用。因此,它可以与 grep 一起使用,以提供更相关的结果。例如,使用 locate 命令,您可以根据大小、类型、名称等搜索文件。可以使用以下语法和 search 命令来定位包含特定文本字符串的文件。使用 search 命令查找包含特定文本字符串的文件的格式。

要使用它进行搜索,只需键入 where /path/to/directory 包含文件类型 f,并使用 exec 在文件列表中搜索给定的“text string”,并仅列出包含搜索字符串的文件。搜索将在 /path/to/directory 中进行。type f 将搜索限制为仅常规文件。下面的选项允许您指定 File Find Pro 如何写入、克隆和重命名文件。

命令 -exec grep -l "text string" {} \; 搜索文件,指示 grep 程序,并显示包含指定字符串的文件的名称。因此,在此操作之后,应该获得一个文件名列表,这些文件名与此文本字符串相同且不重复。

结论

在 Linux 中,要搜索包含特定字符串或文本的文件,可以使用 grep 或 find 命令,并带有 '-r' 选项进行递归搜索。这些工具实际上会搜索目录并允许您定位包含与工具中相同信息的文件。