linux有著異常強大的搜尋系統,由於linux一般都充當伺服器,因此,在linu
的檔案系統中可能會存著大量的檔案,我們可能常常忘了某個檔案放在
哪裡,這個時候,linux的搜尋系統便發生了巨大的作用,它的強大和方便也給
我們留下了深刻的印象。
這裡,介紹一下linux搜尋系統的幾個命令
1. which(尋找可執行檔)
格式:which [-a] command
這個命令是根據“PATH”環境變數所規範的路徑,來搜尋“執行檔案”的檔案名稱。
預設情況下,只搜尋到第一個匹配的檔案就停止搜尋,當使用”-a”參數時,會
列出所有可以找到的同名執行檔案。
2. whereis(在資料庫中尋找二進位、原始碼和協助手冊檔案)
格式:whereis [-bmsu] 檔案或者目錄名
-b:只尋找二進位檔案
-m:只找在協助檔案manual路徑下的檔案
-s:只找源檔案
-u:沒有協助檔案的檔案
預設情況下,whereis會在資料庫中尋找所有上述的檔案,當限定參數時,便只尋找限定類型的檔案。Linux系統會將系統內的所有檔案都記錄在一個資料庫檔案裡(/var/lib/slocate),當我們使用whereis 或者locate時,就會以此資料庫檔案的內容為準。
注意:由於該資料庫預設是每天更新一次,因此,建立立的檔案可能在資料庫中是搜尋不到的,這時候,可以手動調用/usr/bin/updatedb命令來更新資料庫檔案。
3.locate(尋找資料庫中的檔案)
格式:locate filename
Locate命令也是從資料庫中尋找檔案,因此,它也和whereis一樣,存在著可能搜尋不到建立立的檔案的問題,與whereis不同的時,它能搜尋到所有類型的檔案,而不僅僅是二進位、原始碼以及協助手冊檔案。並且,它只需要輸入檔案名稱的一部分就可以了,並不需要輸入完整的檔案名稱。如尋找.bashrc檔案,我們可以使用locate shrc。同時,它還有一個比較強大的地方就是能夠使用萬用字元。比如,我想尋找所有記錄檔,就可以使用locate \*.log,注意,這個地方的*要使用’\’來轉義,否則,只會尋找目前的目錄中的檔案。
4.find
格式:find [PATH] [OPTION] [ACTION]
Find 是最強大的搜尋命令,它可以通過指定參數從而通過各種條件來尋找檔案。比如,可能通過檔案建立時間,檔案擁有者,檔案許可權等等參數來尋找合格檔案。具體的參數可以參考http://os.51cto.com/art/201109/293912.htm。
但是,find命令的一個弊端是它很費時,因為它是直接搜尋硬碟,而不像locate和whereis那樣只需要搜尋檔案資料庫就可以了,因此,一般的情況下我們不會使用這個命令。當然,不可否認的是它非常的強大,所以在有些時候還是很有用地。