用戶可能會遇到這樣的情況:他們希望查找目錄、文件夾或子文件夾結構中與特定字符串匹配但文件名有變化的所有文件,這種情況非常完美用於根據通配符匹配查找文件。

例如,您可能希望查找文件系統上包含單詞“invoice”的所有文件,無論“invoice”文本出現在文件名中的哪個位置(例如,文件命名如下:invoice1-2023.pdf、big-invoice-wow.pdf、yourfavoriteinvoice.pdf、invoice-2-22.pdf 等)。

本文將通過幾個實際示例向您展示如何使用命令行在目錄和子目錄中遞歸查找文件,方法是使用與可能出現在文件名本身任何位置的文本字符串相匹配的通配符。

如何遞歸查找通配符匹配的所有文件

我們將使用 find 命令,您可能已經從名稱中猜到了,該命令允許您在文件中查找文件直接從命令行系統。

find.-name”text*”

該命令分解如下:

查找[目錄](本例中“.”代表當前目錄)-name “[匹配的文本”和通配符]”(在本例中,文件名與“文本”匹配,後跟任何內容)。

要查找特定文本匹配之前和之後帶有通配符的匹配項,請使用以下命令,將“文本”替換為適當的內容用於匹配您的用例的文件的語法:

find.-name”*text*”

使用簡介中提到的示例,假設您正在嘗試查找文件名中包含文本“invoice”的所有文件,無論它們位於何處在用戶的整個主目錄結構中。此類搜索的語法可能如下所示:

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 更容易,您可能會發現這個遞歸列出子目錄中所有文件的技巧也很有幫助。

如果您有另一種通過通配符匹配在目錄中遞歸搜索文件的首選方法,請在下面的評論!

相關

Categories: IT Info