

點(diǎn)擊「閱讀原文」查看良許原創(chuàng)精品視頻。
在Linux上,fd是查找命令的一種更簡單的替代方法。它有簡化的語法,使用合理的默認(rèn)值,現(xiàn)在讓我們來看看吧。fd命令并不意味著要取代傳統(tǒng)的find命令,后者在Linux上一直存在。相反,fd試圖以更直接的方式滿足find的大多數(shù)常用用法,而且它通常比find快八到九倍。您可以在項(xiàng)目的GitHub存儲庫頁面上看到它的一些基準(zhǔn)測試。fd具有彩色輸出,類似于某些ls模式。它是遞歸的,但默認(rèn)情況下不搜索隱藏的目錄。它了解Git,還將自動(dòng)忽略“.gitignore”文件中的任何模式。fd默認(rèn)不區(qū)分大小寫。但是,如果您的搜索模式包含一個(gè)大寫字母,fd將以區(qū)分大小寫的模式運(yùn)行。當(dāng)然,您可以重寫默認(rèn)值,但是在許多情況下,它們對您是有利的。從Ubuntu 19.04(Disco Dingo)開始,您可以通過使用apt-get調(diào)用官方維護(hù)的軟件包直接安裝fd。如果您運(yùn)行的是舊版Ubuntu,請查看GitHub頁面上的安裝說明。linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt-get install fd-find在Ubuntu中,命令是fdfind,以避免與另一個(gè)現(xiàn)有的實(shí)用程序發(fā)生名稱沖突。如果希望它是fd,可以設(shè)置一個(gè)別名:linuxmi@linuxmi:~/www.linuxmi.com$ alias fd=fdfind要使別名保持不變,以便在重新啟動(dòng)后仍然可用,請將其放入“ .bashrc”或“ .bash_aliases”文件中。為避免混淆,我們在Ubuntu測試PC上保留了命令的默認(rèn)名稱fdfind。fd和fdfind是完全相同的命令,如下面的示例所示(如果您要求fdfind顯示其版本,則稱其為“ fd”):linuxmi@linuxmi:~/www.linuxmi.com$ fdfind --version在示例中,我們將使用Ubuntu“ fdfind”。在其他Linux發(fā)行版中,可以鍵入“ fd”而不是“ fdfind”來保存一些擊鍵。如果使用不帶命令行選項(xiàng)的fd,則其行為類似于ls,不同之處在于它默認(rèn)情況下在子目錄中列出文件。linuxmi@linuxmi:~/www.linuxmi.com$ fdfind要查看特定類型的文件,請使用-e(擴(kuò)展名)選項(xiàng)。請注意,您不必在擴(kuò)展名前加句點(diǎn)(.),也不區(qū)分大小寫。linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -e png現(xiàn)在,列出的唯一文件是PNG圖像文件。要查找單個(gè)文件,請?jiān)诿钚猩湘I入其名稱,如下所示:linuxmi@linuxmi:~/www.linuxmi.com$ fdfind linuxmi.png找到該文件,并且該文件恰好在子目錄中。我們不必告訴fd進(jìn)行遞歸搜索。要在特定目錄中開始搜索,請?jiān)诿钚猩习募窂?。以下命令將在?etc”目錄中開始搜索,并查找文件名中包含“passwd”的文件:linuxmi@linuxmi:~/www.linuxmi.com$ fdfind passwd /etc在這里,我們搜索所有C源代碼文件的名稱中包含“l(fā)inuxmi”的文件:linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -e c linuxmi您可以要求fd查找目錄,文件(包括可執(zhí)行文件和空文件)以及符號鏈接。您可以使用-t(type類型)選項(xiàng),然后使用以下字母之一進(jìn)行操作:
f: 文件
d: 目錄
l: 符號鏈接
x: 可執(zhí)行文件
e: 空文件
下面尋找一個(gè)名為images的目錄:
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -td images

找到匹配項(xiàng),在當(dāng)前目錄下的一個(gè)子目錄中。
讓我們看看區(qū)分大小寫如何與搜索模式一起工作。我們鍵入以下內(nèi)容首先搜索文件名中包含“l(fā)inux”的文件,然后搜索文件名中包含“Linux”的文件:
linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -tf linux

linuxmi@linuxmi:~/www.linuxmi.com$ fdfind -tf Linux

在第一個(gè)命令中,我們使用了小寫搜索模式,這導(dǎo)致fd以不區(qū)分大小寫的方式進(jìn)行操作。這意味著“l(fā)inux”和“Linux”都是有效匹配。
第二個(gè)命令包含一個(gè)大寫字符,這導(dǎo)致fd以區(qū)分大小寫的方式進(jìn)行操作。這意味著只有“Linux”是一個(gè)有效匹配。
命令執(zhí)行
fd命令允許您啟動(dòng)另一個(gè)命令并在找到的每個(gè)文件上執(zhí)行它。
假設(shè)我們知道源代碼目錄樹中某處有一個(gè)Zip文件。我們可以使用以下命令來查找它,該命令搜索具有ZIP擴(kuò)展名的文件:
linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip

使用-x(exec)選項(xiàng),您可以將找到的每個(gè)文件傳遞給另一個(gè)命令,以供其處理。例如,我們可以鍵入以下內(nèi)容來調(diào)用unzip實(shí)用程序以解壓縮我們的ZIP文件(“ {}”是代表找到的文件的占位符):
linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip -x unzip {}
這將解壓縮當(dāng)前工作目錄中的文件。如果我們想把它解壓縮到包含ZIP文件的目錄中,我們可以使用以下占位符之一:
{}?– 一個(gè)占位符,它將隨著搜索結(jié)果的路徑改變(wp-content/uploads/01.jpg)。
{.} – 類似于{},但不使用文件擴(kuò)展名(wp-content/uploads/01)。
{/}:將被搜索結(jié)果的基本名稱 (01.jpg)所取代的占位符。
{//}:發(fā)現(xiàn)路徑的父目錄(wp-content/uploading)。
{/.}:只有基本名稱,沒有擴(kuò)展名(01)。
為了找到我們的ZIP文件并將其解壓縮到包含它的目錄中,我們可以使用unzip -d(目錄)選項(xiàng),并傳入父目錄占位符({//}):
linuxmi@linuxmi:~/linuxmi.com$ fdfind -e zip -x unzip {} -d {//}

然后將ZIP文件定位并解壓縮到其父目錄中。

總結(jié)
這是對fd命令的簡要回顧,一些用戶可能會發(fā)現(xiàn)fd命令更容易使用,也更快。正如本文前面提到的,fd并不是完全替代find,而是提供簡單的用法、更容易的搜索和更好的性能。在您的武器庫中,fd不需要太多的空間,是一個(gè)很好的工具。
添加良許個(gè)人微信即送3套程序員必讀資料
→ 精選技術(shù)資料共享
→ 高手如云交流社群
本公眾號全部博文已整理成一個(gè)目錄,請?jiān)诠娞柪锘貜?fù)「m」獲??!
推薦閱讀:
《最受歡迎的男友職業(yè)排行榜Top10》
辦公室劃水?早說啊,這事我擅長...
13 款 Linux 比較實(shí)用的工具
5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號內(nèi)回復(fù)「1024」,即可免費(fèi)獲?。。?/span>