如何通过通配符递归查找目录/子文件夹中的所有文件

如何通过通配符递归查找目录/子文件夹中的所有文件

用户可能会遇到这样一种情况:他们希望查找目录、文件夹或子文件夹结构中的所有文件,这些文件与特定字符串匹配,但文件名有所不同,这种情况非常适合根据通配符匹配查找文件。

例如,您可能希望找到文件系统上包含“发票”一词的所有文件,而不管“发票”文本出现在文件名中的哪个位置(例如,命名如下的文件:invoice1-2023.pdf、big-invoice-wow.pdf、yourfavoriteinvoice.pdf、invoice-2-22.pdf等)。

本文将通过几个实际示例向您展示如何使用命令行在目录和子目录中递归查找文件,方法是使用与可能出现在文件名本身任何位置的文本字符串匹配的通配符。

 

如何递归查找通配符匹配的所有文件

我们将使用 find 命令,正如您可能已经猜到的名称,它允许您直接从命令行查找文件系统中的文件。

find . -name "text*"

此命令细分如下:

find [directory](在本例中为“.”表示当前目录)-name “[匹配的文本和通配符]”(在本例中,文件名与“text”匹配,后跟任何内容)。

要查找在特定文本匹配之前和之后带有通配符的匹配项,请使用以下命令,将“text”替换为适当的语法以匹配您的用例的文件:

find . -name "*text*"

使用简介中提到的示例,假设您正在尝试跟踪文件名中包含文本“发票”的所有文件,无论它们位于用户整个主目录结构中的哪个位置。此类搜索的语法可能如下所示:

find ~/ -name "*invoice*"

执行该命令可能会看到类似于以下内容的内容作为命令输出:

/Users/Paul//Library/Application Support/CloudAppHoldingFiles/mystery-invoice-2023.pdf
/Users/Paul//Library/Application Support/WhoKnows/invoice-2024.pdf
/Users/Paul/Documents/big-invoice-wow.pdf
/Users/Paul/Documents/Misc/small-invoice-dontforget.pdf
/Users/Paul/Desktop/YouForgotAboutThisInvoice.pdf
/Users/Paul/Desktop/AnotherInvoice.pdf
/Users/Paul/Documents/Invoices/invoice-1-23.pdf
/Users/Paul/Documents/Invoices/invoice-3-23.pdf
/Users/Paul/Documents/Invoices/invoice-4-23.pdf
/Users/Paul/Documents/Invoices/invoice-5-23.pdf
/Users/Paul/Documents/Invoices/invoice-6-23.pdf

如您所见,如果您的文件分散在文件系统中,并且要按名称匹配和通配符跟踪所有文件,则此命令和文件查找特别有用。

虽然您当然也可以使用 Spotlight 或 Finder 来尝试跟踪所有匹配项,但随着 Spotlight 的一些最新更改,实际查找所有文件似乎更加困难,虽然 Finder 搜索也可以使用通配符来查找名称匹配项,但命令行对许多用户来说更容易。如果 Finder 更容易,您可能会发现这个递归列出子目录中所有文件的技巧也很有帮助。

正文完