一、前言
Linux系統提供了多種查找檔案的指令,而且每種查找指令都具有其獨特的優勢,下面詳細總結一下常用的幾個Linux查找指令。
二、which指令
- 查找類型:二進制檔案;
- 檢索範圍:PATH環境變量裡面指定的路徑中查找;
通過which指令可以快速傳回某個指定指令的位置資訊。
- 優點:查找速度快;
- 缺點:僅支援二進制檔案;
三、whereis指令
- 查找類型:二進制檔案,man幫助檔案,及源代碼檔案;
- 檢索範圍:/usr目錄
通過whereis指令可以快速傳回某個指定指令的位置資訊,及其man檔案和源代碼檔案的位置資訊(如果存在的話)。
當然也可以通過參數指定傳回某一類查找結果:
- -b 僅查找二進制檔案;
- -m 僅查找man幫助檔案;
- -s 僅查找源代碼檔案;
- 優點:查找速度快;
- 缺點:查找檔案類型及範圍均有限;
四、locate指令
- 查找類型:所有檔案;
- 檢索範圍:locatedb資料庫;
locate是Linux系統提供的一種快速檢索全局檔案的系統指令,它并不是真的去檢索是以系統目錄,而是檢索一個資料庫檔案locatedb(Ubuntu系統位置/var/cache/locate/locatedb),該資料庫檔案包含了系統所有檔案的路徑索引資訊,是以查找速度很快。
Linux系統⾃動建立這個資料庫,并且每天⾃動更新⼀次,是以對于新變動的檔案(如新安裝或新拷貝)使⽤locate指令是查不到的。為了避免這種情況,可以在使⽤locate指令之前,先執行一下"sudo updatedb"指令來手動更新資料庫。
- 優點:查找速度快,且支援所有檔案類型;
- 缺點:不支援新變動的檔案檢索,需要手動更新資料庫;
五、find指令
- 查找類型:所有檔案;
- 檢索範圍:指定路徑;
find指令是Linux最強大的查找指令,參數多,用法豐富,下面示範一些常用的搜尋方法。
基本用法:$ find <檢索路徑> <選項> <搜尋内容>
可以指定完整的檔案名稱,也可以使用通配符進行模糊查找。
可以指定檔案類型進行查找:
- -type d 查找目錄;
- -type f 查找普通檔案;
- -type l 查找軟連結檔案;
還有最強大的組合指令用法,比如将find+xargs+grep組合檢索傳回的檔案是否包含指定字元串;find+xargs+cp組合将傳回結果拷貝到指定目錄下;
上面指令中的"-i"與"{}"是配套使用的,"-i"表示将前面find指令的标準輸出作為參數傳遞給"{}";而"{}"作為後面cp指令的第一個參數。
- 優點:功能強大,且支援組合指令;
- 缺點:如果指定的檢索路徑層級複雜,則檢索速度較慢。