如何在 Linux 中递归搜索和查找文件
这个简短的教程解释了如何在 Linux 操作系统中递归地搜索和查找文件。
阅读本文后,您将能够使用不同的技术递归地查找任何文件,包括单个文件搜索、多个文件搜索、按权限查找文件等等。本文档针对 Linux 新用户和经验丰富的用户进行了优化。所有方法对于每个 Linux 发行版都有效。
本教程中的所有示例都包含屏幕截图,以便任何 Linux 用户轻松理解和重现它们。
在 Linux 中递归查找文件
find 命令不需要标志即可在当前目录中递归搜索文件。您只需使用 –name 选项定义主目录和文件名。该命令将搜索主目录和所有子目录中的文件。
语法很简单,如下所示:
如果您想在主目录和子目录中查找 27.jpg 文件,请运行以下命令,如以下屏幕截图所示:
正如您所看到的,该文件位于/home/linux/Downloads/recur子目录中。
上一个命令的替代方法是以下示例中显示的 tree 命令,您可以在当前目录中搜索名为 27.jpg 的同一文件:
正如您在上图中看到的,格式有很大不同。只要您不需要复制完整路径来粘贴它,它似乎更加用户友好或更好。
以下屏幕截图显示了如何使用 find 命令递归搜索多个文件。
递归搜索多个文件的语法如下:
请注意,第二个文件名之前有一个 –o 标志。您可以通过添加多个 –o –name 标志来添加多个文件。例如,要使用相同的命令查找 4 个文件,请使用以下语法:
在下图描述的实际示例中,使用此命令查找名为 27.jpg 的文件和名称以“DIAGRAM”开头但未指定扩展名的文件。相反,请使用通配符 (*) 查找任何名为 DIAGRAM 的文件,无论其类型如何。
正如您在上图中看到的,这两个文件都是递归找到的。
下一个示例介绍如何使用 find 命令按扩展名查找文件。在下图中,您可以看到如何再次使用通配符递归查找所有 .jpg 文件。语法非常简单:
因此,要递归查找所有 .jpg 文件,请运行以下命令:
如上图所示,所有 jpg 文件及其路径均已成功列出。您可以将 .jpg 扩展名替换为您想要搜索的任何扩展名,例如 .png、.txt、.c 等。
现在,我们假设您不想递归地查找文件而是目录。您需要做的就是使用本教程第一个示例中显示的相同命令,然后添加 -type d 选项。语法如下:
在下面的实际示例中,使用前面的语法查找recur目录。
如上图所示,成功找到名为“recur”的目录。
您还可以使用以下语法按大小查找文件,其中
以下示例描述如何查找 10 MB 大小的文件。您可以将 MB 中的 M 定义单位替换为 c(表示字节)、w 表示两个两字节字,k 表示千字节,G 表示吉比字节(注意单位区分大小写)。
要查找 10 MB 的文件,请执行以下命令:
所有 10M 文件及其路径均已正确列出。
根据权限查找文件的语法如下所示:
假设您想要识别并列出具有读取、写入和执行权限的文件 (777)。运行的命令如下:
本教程的最后一个示例展示了如何按大小查找并列出文件和目录。
如图所示,文件按大小和适当的单位列出。 0 大小的目录和文件是空的。
结论
Linux 的多功能性和灵活性允许以多种方式递归地查找文件(和其他函数)。所有 Linux 用户(从新用户到系统管理员)都可以轻松地执行它们,无论其知识水平如何。前面描述的所有技术对于所有 Linux 发行版甚至某些 Unix 系统都有效。根据他们的手册页,某些标志可能在某些发行版中有所不同,但大多数都是通用的。如果您的 Linux 发行版与前面解释的任何命令都不匹配,您可以阅读手册页。强烈建议读者练习示例以融入这些知识。
非常感谢您阅读本 Linux 教程。请继续关注我们以获取更多 Linux 专业技巧。