大家好,我是良許,
在系統里查找檔案,是所有工程師都必備的技能(不管你用的是 Windows 、Linux、還是 MacOS 系統),對于 Linux 作業系統,單單一個 find 命令就可以完成非常多的搜索作業,
但是,檔案搜索命令遠不止一個 find 命令,還有很多,本文就對 Linux 下檔案搜索命令進行一個科普,讓你能夠在短時間內找到自己需要的檔案,
1. find
find 命令應該是最經典的命令了,談到搜索工具第一個想到的肯定是 find 命令,但是,find 命令非常強大,想要把它的功能都介紹一遍,恐怕要寫好幾篇文章,
所以,這里就偷個懶,介紹最基本的,根據檔案名查找檔案的方法,假如我們想搜索當前目錄(及其子目錄)下所有 .sh 檔案,可以這樣搜索:

2. locate
locate 是另外一個根據檔案名來搜索檔案的命令,區別于 find 命令,locate 命令無需指定路徑,直接搜索即可,
這個命令不是直接去系統的各個角落搜索檔案,而是在一個叫 mlocate.db 的資料庫下搜索,這個資料庫位于 /var/lib/mlocate/mlocate.db ,它包含了系統里所有檔案的索引,并且會在每天早上的時候由 cron 工具自動更新一次,
正因為如此,locate 的搜索速度遠快于 find 命令,因為它直接在資料庫里檢索,速度自然更快,
locate 命令在找到檔案之后,將直接顯示該檔案的絕對路徑,比如:

但是 locate 命令有個弊端,它無法搜索當天所創建的檔案,因為它的資料庫一天只在早上更新一次,比如我現在創建一個新檔案,locate 沒辦法搜索到:

為了解決這個問題,我們可以使用 updatedb 命令手動去更新它的資料庫:
$ sudo updadb
然后,我們就可以搜索到新檔案了,

3. which
which 命令主要用來查找可執行檔案的位置,它搜索的位置指定在 $PATH 及 $MANPATH 環境變數下的值,默認情況下,which 命令將顯示可執行檔案的第一個存盤位置:

如果某個可執行檔案存盤在多個位置,可以使用 -a 選項列出所有的位置,
如果你想一次性查找多個檔案,可以直接跟在 which 命令后面即可,

4. whereis
whereis 命令會在系統默認安裝目錄(一般是有root權限時默認安裝的軟體)查找二進制檔案、原始碼、檔案中包含給定查詢關鍵詞的檔案,(默認目錄有 /bin, /sbin, /usr/bin, /usr/lib, /usr/local/man等類似路徑),
一般包含以下三部分內容:
- 二進制檔案的路徑
- 二進制檔案的原始碼路徑
- 對應 man 檔案的路徑
比如我們現在搜索 ls 命令:

我們可以使用 -b 選項來只搜索可執行檔案所在位置,使用 -B 選項指定搜索位置,使用 -f 選項列出檔案的資訊,

同樣地,我們可以使用 -s 限定只搜索原始碼路徑,使用 -m 搜索 man page 路徑,使用 -s 指定搜索源代碼檔案的路徑,使用 -M 指定搜索幫助檔案的路徑,
公眾號:良許Linux
有識訓?希望老鐵們來個三連擊,給更多的人看到這篇文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/54891.html
標籤:Linux
