如何通过通配符递归查找目录/子文件夹中的所有文件
用户可能会遇到这样的情况:他们希望查找目录、文件夹或子文件夹结构中与特定字符串匹配但文件名有变化的所有文件,这种情况非常适合根据通配符匹配查找文件。
例如,您可能希望找到文件系统上包含单词“invoice”的所有文件,无论“invoice”文本出现在文件名中的哪个位置(例如,命名如下的文件:invoice1-2023.pdf、big-invoice-wow.pdf、yourfavoriteinvoice.pdf、invoice-2-22.pdf 等)。
本文将通过几个实际示例向您展示如何使用命令行在目录和子目录中递归查找文件,方法是使用与可能出现在文件名本身任何位置的文本字符串相匹配的通配符。
如何递归查找通配符匹配的所有文件
我们将使用 find 命令,正如您可能已经从名称中猜到的那样,该命令允许您直接从命令行查找文件系统中的文件。
find . -name "text*"
该命令分解如下:
find [目录](在这种情况下,“.”代表当前目录) -name “[匹配的文本和通配符]”(在这种情况下,文件名与“文本”匹配,后跟任何内容)。
要查找特定文本匹配之前和之后带有通配符的匹配项,请使用以下命令,将“text”替换为适当的语法以匹配您的用例的文件:
find . -name "*text*"
使用简介中提到的示例,假设您正在尝试跟踪文件名中包含文本“invoice”的所有文件,无论它们位于用户整个主目录结构中的哪个位置。此类搜索的语法可能类似于以下内容:
find ~/ -name "*invoice*"
建议阅读:如何修复 Windows Server 2016 启动文件和系统文件步骤
执行该命令可能会看到类似以下内容的命令输出:
/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 更容易,您可能会发现递归列出子目录中所有文件的技巧也很有帮助。
如果您有另一种通过通配符匹配在目录中递归搜索文件的首选方法,请在下面的评论中分享您的方法!
