如何在 Linux 上使用 fd 命令

已發表: 2022-01-29
Linux PC 上的終端​​窗口,帶有 Ubuntu 風格的桌面。
Fatmawati Achmad Zaenuri/Shutterstock

在 Linux 上, fdfind命令的一種更簡單的替代方法。 它具有簡化的語法,使用合理的默認值,並具有內置的常識行為。 讓我們逐步了解它。

fd 與 find:有什麼區別?

fd命令並不是要取代傳統的find命令,它一直在 Linux 上,嗯,永遠。 相反, fd試圖以更直接的方式滿足find的大多數常見用途——而且,它通常比find快八到九倍。 您可以在項目的 GitHub 存儲庫頁面上查看它的一些基準測試。

10 個適合初學者的基本 Linux 命令
相關10 個適合初學者的基本 Linux 命令

fd具有彩色輸出,類似於某些ls模式。 它是遞歸的,但默認情況下不搜索隱藏目錄。 它知道 Git,並且會自動忽略“.gitignore”文件中的任何模式。

fd默認情況下不區分大小寫。 但是,如果您的搜索模式包含大寫字母,則fd會以區分大小寫的模式運行。 當然,您可以覆蓋默認值,但在許多情況下,它們對您有利。

相關:如何使用所有 Linux 的搜索命令

安裝 fd

從 Ubuntu 19.04 (Disco Dingo) 開始,您可以通過使用apt-get調用官方維護的軟件包來直接安裝fd 。 如果您運行的是舊版本的 Ubuntu,請查看 Git 中心頁面上的安裝說明。

鍵入以下內容:

 sudo apt-get install fd-find 

廣告

在 Ubuntu 中,該命令是fdfind以避免與另一個現有實用程序發生名稱衝突。 如果你希望它是fd ,你可以設置一個別名:

 別名 fd=fdfind 

要使別名持久化以便在重新啟動後仍然可用,請將其放入“.bashrc”或“.bash_aliases”文件中。

相關:如何在 Linux 上創建別名和 Shell 函數

要在 Fedora 上安裝fd ,請輸入以下命令:

 sudo dfn install fd-find 

在 Manjaro 上,鍵入以下內容:

 sudo pacman -Syu fd 

fd 與 fdfind

為避免混淆,我們在 Ubuntu 測試 PC 上保留了該命令的默認名稱fdfindfdfdfind是完全相同的命令,正如您將在以下示例中看到的那樣(如果您要求fdfind顯示其版本,它稱自己為“fd”):

 fdfind --版本

我們將調用命令“fed”,但在示例中,我們將使用 Ubuntu 的“fdfind”。 在其他 Linux 發行版上,您可以鍵入“fd”而不是“fdfind”以節省一些擊鍵。

使用 fd 進行簡單搜索

如果你使用fd沒有命令行選項,它的行為有點像ls ,除了它默認列出子目錄中的文件。

鍵入以下內容:

 查找

對於不同的文件類型和目錄,輸出以不同的顏色顯示。

廣告

要查看特定類型的文件,請使用-e (擴展名)選項。 請注意,您不必在擴展名前加上句點 (.),也不區分大小寫。

例如,您可以鍵入以下內容:

 fdfind -e png 

現在,列出的唯一文件是 PNG 圖像文件。

要查找單個文件,請在命令行中鍵入其名稱,如下所示:

 fdfind index.page 

找到該文件並且恰好位於子目錄中。 我們不必告訴fd遞歸搜索。

要在特定目錄中開始搜索,請在命令行中包含文件路徑。 以下命令將在“/etc”目錄中開始搜索,並查找文件名中包含“passwd”的文件:

 fdfind 密碼 /etc 

在這裡,我們正在搜索文件名中包含“coord”的所有 C 源代碼文件:

 fdffind -ec 坐標

找到了兩個匹配的文件。

fd 和 Git

Git 是一個非常流行的源代碼版本控制系統。 如果您在計算機上使用 Git,您可能會使用“.gitignore”文件來告訴 Git 它應該關注哪些文件,以及可以忽略哪些文件。 默認情況下, fd尊重“.gitignore”文件中的設置。

廣告

在這個目錄中,我們有一個 Git 存儲庫和“.gitignore”文件。 我們輸入以下內容:

 ls -adl .git* 

讓我們讓fd列出文件名中包含“coord”的所有文件。 然後我們將重複搜索並使用-I (不忽略)選項。 這告訴fd忽略“.gitignore”文件中的設置並報告每個匹配的文件。

為此,我們鍵入以下內容:

 fd查找坐標
fdfind 坐標 -I 

第二組結果中的兩個額外文件是目標文件。 這些是在編譯文件程序時創建的。 然後鏈接器使用它們來創建程序的最終可執行版本。

源代碼版本控製程序通常會忽略目標文件。 每次編譯程序時它們都會重新生成,因此您不必存儲它們的副本。 “.gitignore”文件中有一個條目指示 Git 忽略目標文件,默認情況下, fd也會忽略它們。

-I (不忽略)選項強制fd返回它找到的所有內容,而不是由“.gitginore”文件引導。

文件類型和區分大小寫

您可以要求fd查找目錄、文件(包括可執行文件和空文件)和符號鏈接。 您可以使用-t (類型)選項,後跟以下字母之一:

  • f :文件。
  • d :目錄。
  • l :符號鏈接。
  • x :可執行文件。
  • e : 空文件。

下面查找名為 images 的目錄:

 fdfind -td 圖片

廣告

找到一個匹配項,比當前子目錄低一個子目錄。

讓我們看看區分大小寫如何與搜索模式一起工作。 我們鍵入以下內容首先搜索文件名中包含“geo”的文件,然後搜索文件名中包含“Geo”的文件:

 fdffind -tf 地理
fdfind -tf 地理

在第一個命令中,我們使用了小寫搜索模式,這導致fd以不區分大小寫的方式運行。 這意味著“Geo”和“geo”都是有效的匹配項。

我們的第二個命令包含一個大寫字符,這導致fd以區分大小寫的方式運行。 這意味著只有“Geo”是有效匹配。

命令執行

fd命令允許您啟動另一個命令並在每個找到的文件上執行它。

假設我們知道在我們的源代碼目錄樹中某處有一個 Zip 文件。 我們可以使用以下命令查找它,該命令會搜索帶有 ZIP 擴展名的文件:

 fdffinf -e 壓縮包

廣告

使用-x (exec) 選項,您可以將每個找到的文件傳遞給另一個命令以由它處理。 例如,我們可以鍵入以下內容來調用解壓縮實用程序來解壓縮我們的 ZIP 文件(“{}”是代表找到的文件的佔位符):

 fdffind -e zip -x 解壓{}

這將解壓縮當前工作目錄中的文件。 如果我們希望將其解壓縮到包含 ZIP 文件的目錄中,我們可以使用以下佔位符之一:

  • {} :找到的文件的完整文件路徑和名稱。
  • {/} : 找到的文件的文件名。
  • {//} :包含找到的文件的目錄。
  • {/.} :找到的文件的文件名,不帶擴展名。

為了在包含它的目錄中找到並解壓縮我們的 ZIP 文件,我們可以使用 unzip -d (目錄)選項,並傳入父目錄佔位符( {//} ):

 fdffind -e zip -x 解壓 {} -d {//} 

然後找到 ZIP 文件並將其解壓縮到其父目錄中。

你的首選?

因為它以如此簡單的方式涵蓋了最常見的用途,所以fd可以很容易地成為您的首選“查找”命令。 每當您需要它更高級的功能時,您總是可以回到那個經驗豐富的老手, find .

相關:適合開發人員和愛好者的最佳 Linux 筆記本電腦