whereis與which find locate 區別
linux下的查詢命令有很多,常用的有which、whereis、locate、find。但是它們既然都是查詢,為什麼要用到這麼多種命令?所以今天特意寫一篇文章來分析下這三者的特點和區別。
which 檢視可執行檔案的位置 whereis 檢視檔案的位置 locate 配 合數據庫檢視檔案位置 find 實際搜尋硬碟查詢檔名稱
1、which 這條命令主要是用來查詢系統PATH目錄下的可執行檔案。說白了就是查詢那些我們已經安裝好的可以直接執行的命令。比如:
其中的alias代表的是命令別名。這裡需要說明的是which是可以分辨出命令的別名的,你也可以通過which 命令別名查詢到命令的位置。這點下面要介紹的命令是做不到的。 2、whereis
和find相比,whereis查詢的速度非常快,這是因為linux系統會將系統內的所有檔案都記錄在一個數據庫檔案中,當使用whereis和下面即將介紹的locate時,會從資料庫中查詢資料,而不是像find命令那樣,通過遍歷硬碟來查詢,效率自然會很高。 但是該資料庫檔案並不是實時更新,預設情況下時一星期更新一次,因此,我們在用whereis和locate 查詢檔案時,有時會找到已經被刪除的資料,或者剛剛建立檔案,卻無法查詢到,原因就是因為資料庫檔案沒有被更新。 3、locate
locate 尋找的資料是由『已建立的資料庫 /var/lib/mlocate/』 裡面的資料所搜尋到的,所以不用直接在去硬碟中存取資料,因此 很快。
4、find
find命令要比前邊幾條複雜的多,功能也強大的多。這條命令是通過直接搜尋硬碟的方式查詢的,所以可以保證查詢的資訊絕對可靠。並且支援各種查詢條件。但是功能強大肯定是有代價的,那就是搜尋速度慢。所以一般前邊幾種找不出來的情況下才會使用find。另外如果要實現某些特殊條件的查詢,比如找出某個使用者的size最大的檔案,那就只能用find了。
語法:
[
例:搜尋 /home 底下屬於 john 的檔案
總結:
which主要用來查詢可直接執行的命令,可以查詢別名。 whereis比which的搜尋範圍大了一些,同時可以查詢原始檔和man檔案。這兩個命令適用於查詢安裝好的命令。 locate的查詢範圍更大,可以查詢任意型別檔案。適合快速查詢指定檔案。 find最強大也最慢。適合查詢前幾個命令找不到的檔案。