厲害了!除了find命令,還有這么多文件查找命令,高手必備!


??當(dāng)當(dāng)年中慶,又有羊毛可以薅了?。?!?
點(diǎn)擊「閱讀原文」查看良許原創(chuàng)精品視頻。
大家好,我是良許。
在系統(tǒng)里查找文件,是所有工程師都必備的技能(不管你用的是 Windows 、Linux、還是 MacOS 系統(tǒng))。對(duì)于 Linux 操作系統(tǒng),單單一個(gè) find 命令就可以完成非常多的搜索工作。
但是,文件搜索命令遠(yuǎn)不止一個(gè) find 命令,還有很多。本文就對(duì) Linux 下文件搜索命令進(jìn)行一個(gè)科普,讓你能夠在短時(shí)間內(nèi)找到自己需要的文件。
??1. find??
find 命令應(yīng)該是最經(jīng)典的命令了,談到搜索工具第一個(gè)想到的肯定是 find 命令。但是,find 命令非常強(qiáng)大,想要把它的功能都介紹一遍,恐怕要寫(xiě)好幾篇文章。
所以,這里就偷個(gè)懶,介紹最基本的,根據(jù)文件名查找文件的方法。假如我們想搜索當(dāng)前目錄(及其子目錄)下所有 .sh 文件,可以這樣搜索:

??2. locate??
locate 是另外一個(gè)根據(jù)文件名來(lái)搜索文件的命令。區(qū)別于 find 命令,locate 命令無(wú)需指定路徑,直接搜索即可。
這個(gè)命令不是直接去系統(tǒng)的各個(gè)角落搜索文件,而是在一個(gè)叫 mlocate.db 的數(shù)據(jù)庫(kù)下搜索。這個(gè)數(shù)據(jù)庫(kù)位于 /var/lib/mlocate/mlocate.db ,它包含了系統(tǒng)里所有文件的索引,并且會(huì)在每天早上的時(shí)候由 cron 工具自動(dòng)更新一次。
正因?yàn)槿绱?,locate 的搜索速度遠(yuǎn)快于 find 命令,因?yàn)樗苯釉跀?shù)據(jù)庫(kù)里檢索,速度自然更快。
locate 命令在找到文件之后,將直接顯示該文件的絕對(duì)路徑,比如:

但是 locate 命令有個(gè)弊端,它無(wú)法搜索當(dāng)天所創(chuàng)建的文件,因?yàn)樗臄?shù)據(jù)庫(kù)一天只在早上更新一次。比如我現(xiàn)在創(chuàng)建一個(gè)新文件,locate 沒(méi)辦法搜索到:

為了解決這個(gè)問(wèn)題,我們可以使用 updatedb 命令手動(dòng)去更新它的數(shù)據(jù)庫(kù):
$?sudo?updadb
然后,我們就可以搜索到新文件了。

??3. which??
which 命令主要用來(lái)查找可執(zhí)行文件的位置,它搜索的位置指定在 $PATH 及 $MANPATH 環(huán)境變量下的值,默認(rèn)情況下,which 命令將顯示可執(zhí)行文件的第一個(gè)存儲(chǔ)位置:

如果某個(gè)可執(zhí)行文件存儲(chǔ)在多個(gè)位置,可以使用 -a 選項(xiàng)列出所有的位置。
如果你想一次性查找多個(gè)文件,可以直接跟在 which 命令后面即可。

??4. whereis??
whereis 命令會(huì)在系統(tǒng)默認(rèn)安裝目錄(一般是有root權(quán)限時(shí)默認(rèn)安裝的軟件)查找二進(jìn)制文件、源碼、文檔中包含給定查詢關(guān)鍵詞的文件。(默認(rèn)目錄有 /bin, /sbin, /usr/bin, /usr/lib, /usr/local/man等類似路徑)。
一般包含以下三部分內(nèi)容:
二進(jìn)制文件的路徑
二進(jìn)制文件的源碼路徑
對(duì)應(yīng) man 文件的路徑
比如我們現(xiàn)在搜索 ls 命令:

我們可以使用 -b 選項(xiàng)來(lái)只搜索可執(zhí)行文件所在位置,使用 -B 選項(xiàng)指定搜索位置,使用 -f 選項(xiàng)列出文件的信息。

同樣地,我們可以使用 -s 限定只搜索源碼路徑,使用 -m 搜索 man page 路徑,使用 -s 指定搜索源代碼文件的路徑,使用 -M 指定搜索幫助文件的路徑。
良許個(gè)人微信
添加良許個(gè)人微信即送3套程序員必讀資料
→ 精選技術(shù)資料共享
→ 高手如云交流社群
本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲??!
推薦閱讀:
Leetcode驚現(xiàn)馬化騰每天刷題?為啥大佬都這么努力!
玩轉(zhuǎn) Terminal 終端:入門(mén)指南及進(jìn)階技巧
深度好文:Linux系統(tǒng)內(nèi)存知識(shí)
5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹(shù)莓派,等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲取?。?/span>
