网站搜索

如何在 Linux 中按名称或扩展名查找文件


很多时候,我们发现自己需要搜索具有不同扩展名的多个文件,这对于许多 Linux 用户来说是常见的情况,尤其是在终端中工作时。

我们可以使用多种 Linux 实用程序来定位文件系统上的文件,但查找具有多个扩展名的文件有时会很棘手,并且需要特定的命令。

find 实用程序是用于在 Linux 文件系统上定位文件的众多实用程序之一。在本操作指南中,我们将介绍一些使用 find 帮助我们一次查找多个文件名的示例。

在我们深入了解实际命令之前,让我们先看一下 Linux `find` 实用程序的简要介绍。

find命令简介

find 命令是一个通用工具,用于在 Linux 文件系统中搜索文件和目录。

find 实用程序最简单、最通用的语法如下:

find directory options [expression]

以下是其组件的简要概述:

  • 目录:您要开始搜索的目录。
  • 选项:用于优化搜索的附加参数。
  • 表达式:匹配文件或目录的条件。

让我们继续看一下 Linux 中 find 命令的一些示例。

搜索多个文件扩展名

要查找具有不同扩展名的文件,您可以将 -name 选项与 -o (OR) 运算符结合使用,该运算符允许您指定多种模式来匹配不同的文件类型。

让我们通过一些示例来说明其工作原理。

示例 1:查找 .sh 和 .txt 文件

假设您要查找当前目录中所有带有 .sh.txt 文件扩展名的文件,您可以通过运行以下命令来完成此操作:

find . -type f \( -name "*.sh" -o -name "*.txt" \)

上面命令的解释:

  • . 表示当前目录
  • -type 选项用于指定文件类型,在这里,我们搜索由 f 表示的常规文件
  • -name 选项用于指定搜索模式,在本例中为文件扩展名
  • -o 表示“或”

建议您将文件扩展名括在括号中,并使用 \ 反斜杠)转义字符,如命令中所示。

示例 2:查找 .sh、.txt 和 .c 文件

要查找扩展名为 .sh.txt.c 的三个文件名,请发出以下命令:

find . -type f \( -name "*.sh" -o -name "*.txt" -o -name "*.c" \)

示例 3:查找 .png、.jpg、.deb 和 .pdf 文件

这是另一个示例,我们搜索扩展名为 .png.jpg.deb.pdf 的文件:

find /home/aaronkilik/Documents/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.deb" -o -name ".pdf" \)

示例 4:使用通配符查找

您还可以使用通配符来匹配模式。例如,要查找所有具有 .log.txt.cfg 扩展名的文件:

find /var/log/ -type f \( -name "*.log" -o -name "*.txt" -o -name "*.cfg" \)

示例 5:查找具有复杂模式的文件

假设您要查找以 .tar.gz.zip 结尾的文件:

find /path/to/search/ -type f \( -name "*.tar.gz" -o -name "*.zip" \)

当您仔细观察上面的所有命令时,小技巧是在 find 命令中使用 -o 选项,它使您能够向搜索数组添加更多文件名,并且还知道您正在搜索的文件名或文件扩展名。

结论

在本指南中,我们探讨了如何使用 find 命令来搜索具有多个扩展名的文件。通过将 -name 选项与 -o 运算符结合使用,您可以在单个命令中轻松找到与各种模式匹配的文件。

要深入了解 find 命令及其众多功能,您可以通过在终端中输入 man find 来参考 find 手册页。

man find

请随意尝试这些命令并根据您的特定需求进行调整!