除了find命令,還有這麼多檔案查詢命令!

安全劍客發表於2020-06-29
檔案搜尋 遠不止一個 find  ,還有很多。本文就對   下檔案搜尋命令進行一個科普,讓你能夠在短時間內找到自己需要的檔案。

在系統裡查詢檔案,是所有工程師都必備的技能(不管你用的是 Windows 、Linux、還是 MacOS 系統)。對於 Linux 作業系統,單單一個 find 命令就可以完成非常多的搜尋工作。

但是,檔案搜尋命令遠不止一個 find 命令,還有很多。本文就對 Linux 下檔案搜尋命令進行一個科普,讓你能夠在短時間內找到自己需要的檔案。

除了find命令,還有這麼多檔案查詢命令!除了find命令,還有這麼多檔案查詢命令!

1. find

find 命令應該是最經典的命令了,談到搜尋工具第一個想到的肯定是 find 命令。但是,find 命令非常強大,想要把它的功能都介紹一遍,恐怕要寫好幾篇文章。

所以,這裡就偷個懶,介紹最基本的,根據檔名查詢檔案的方法。假如我們想搜尋當前目錄(及其子目錄)下所有 .sh 檔案,可以這樣搜尋:

除了find命令,還有這麼多檔案查詢命令!除了find命令,還有這麼多檔案查詢命令!

2. locate

locate 是另外一個根據檔名來搜尋檔案的命令。區別於 find 命令,locate 命令無需指定路徑,直接搜尋即可。

這個命令不是直接去系統的各個角落搜尋檔案,而是在一個叫 mlocate.db 的資料庫下搜尋。這個資料庫位於 /var/lib/mlocate/mlocate.db ,它包含了系統裡所有檔案的索引,並且會在每天早上的時候由 cron 工具自動更新一次。

正因為如此,locate 的搜尋速度遠快於 find 命令,因為它直接在資料庫裡檢索,速度自然更快。

locate 命令在找到檔案之後,將直接顯示該檔案的絕對路徑,比如:

除了find命令,還有這麼多檔案查詢命令!除了find命令,還有這麼多檔案查詢命令!

但是 locate 命令有個弊端,它無法搜尋當天所建立的檔案,因為它的資料庫一天只在早上更新一次。比如我現在建立一個新檔案,locate 沒辦法搜尋到:
為了解決這個問題,我們可以使用 updatedb 命令手動去更新它的資料庫: sudo updadb
除了find命令,還有這麼多檔案查詢命令!除了find命令,還有這麼多檔案查詢命令!

3. which

which 命令主要用來查詢可執行檔案的位置,它搜尋的位置指定在 $PATH 及 $MANPATH 環境變數下的值,預設情況下,which 命令將顯示可執行檔案的第一個儲存位置:

如果某個可執行檔案儲存在多個位置,可以使用 -a 選項列出所有的位置。

如果你想一次性查詢多個檔案,可以直接跟在 which 命令後面即可。
除了find命令,還有這麼多檔案查詢命令!除了find命令,還有這麼多檔案查詢命令!

4. whereis

whereis 命令會在系統預設安裝目錄(一般是有root許可權時預設安裝的軟體)查詢二進位制檔案、原始碼、文件中包含給定查詢關鍵詞的檔案。(預設目錄有 /bin, /sbin, /usr/bin, /usr/lib,/usr/local/man等類似路徑)。

一般包含以下三部分內容:

二進位制檔案的路徑

二進位制檔案的原始碼路徑

對應 man 檔案的路徑

比如我們現在搜尋 ls 命令:

除了find命令,還有這麼多檔案查詢命令!除了find命令,還有這麼多檔案查詢命令!

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

同樣地,我們可以使用 -s 限定只搜尋原始碼路徑,使用 -m 搜尋 man page 路徑,使用 -s 指定搜尋原始碼檔案的路徑,使用 -M 指定搜尋幫助檔案的路徑。

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2701060/,如需轉載,請註明出處,否則將追究法律責任。

相關文章