如何在 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
请随意尝试这些命令并根据您的特定需求进行调整!