LINUX 搜尋指令 which, whereis, locate, find的差別
LINUX 搜尋指令 which, whereis, locate, find的差別
資料來源: http://blog.faq-book.com/?p=1013
【which】 通常都是用來尋找『執行檔』路徑
【whereis】 通常是用來尋找『特定檔案』路徑
【whersis】和【locate】搜尋時是以資料庫檔案裡的資料為主
【find】搜尋時是以整個硬碟裡的資料為主
~~~~~~~~~~~~~~
01.Which : 這個指令是根據『PATH』這個環境變數所規範的路徑,去搜尋『執行檔』的檔名,而且which後面接的是『完整檔名』。若加上 -a 選項,則可以列出所有的可以找到的同名執行檔,而非僅顯示第一個!
EX: which -a ifconfig
02.Whereis : 因為Linux 會將系統內所有的檔案都記錄在一個資料庫檔案裡面,當要使用whereis和locate時,就會先以此資料庫檔案的內容為準。有時在使用這兩個執行檔的時後,會找到已經被殺掉的檔案。也有時後會找不到剛剛所建立的最新檔案,因為還沒有被記錄到此資料庫檔案中。
whereis [-bmsu] 檔案或目錄名
選項與參數:
-b :只找可執行檔( binary )格式的檔案
-m :只找在說明檔 manual 路徑下的檔案
-s :只找 source 來源檔案
-u :搜尋不在上述三個項目當中的其他特殊檔案
如果不加任何選項的話,那麼就將所有的資料列出來囉!
03.Locate : 這個 locate 的使用更簡單,直接在後面輸入『檔案的部分名稱』後,就能夠得到結果。但是,在使用上還是會有一些限制的。因為他是經由資料庫來搜尋的,而資料庫的建立預設是在每天執行一次 (每個distribution 都不同,CentOS 5.x 是每天更新資料庫一次!) 所以當你新建立起來的檔案,卻還在資料庫更新之前搜尋該檔案,那麼 locate 會告訴你『找不到!』因此必須要更新資料庫。
04.Find : find是直接從硬碟做查詢的動作,在查詢的方式有很多種,功能太多,有其他文章專門介紹