用 locate 指令尋找檔案

一般在 unix 系統若要尋找某個檔案,你可能會用 ls、find、which、whereis .... 今天來推薦一個更好用、更快的 locate 指令。

ls 或 find 都是到檔案配置表去找你欲搜尋的檔案,茫茫檔案海...所以通常都要好一陣子。
而 locate 找檔案是用查資料庫的方式所以速度很快,他會每天以 cron.daily 去執行「mlocate.cron」來更新檔案的列表,缺點是今天新增的檔案會找不到。

如果你的 Linux / CentOS 是以 minimal 最小安裝,那麼預設是沒有  locate 這個指令的,你要以「sudo yum install -y mlocate」來安裝他。

--- locate 指令使用方式 -----------------------------

語法:locate [參數] 檔案名稱
-i : 忽略大小寫 (預設大小寫是不同的)
-r: 以 regular express 的方式搜尋

※ locate /etc/pa
存在資料庫的索引資料是以完整路徑的方式存放,所以當你以 locate /etc/pa 要去找 /etc/ 目錄下 pa 開頭的檔案,可能會意外的多找了很多不是你想找的,例如底下
/home/user/temp/vmware-tools-distrib/lib/lib64/libconf/etc/pango

雖然 locate 可以類似 ls 指令來用,但路徑中的某段是可能會被誤認的。

※ locate /etc/sh  就可以很單純的找出  /etc/ 底下 sh 開頭的檔案

※ locate -i  filename  忽略大小寫來尋找檔案

※ locate -r  filename$ 
因為 locate 是尋找資料庫內的 /完整路徑/檔名  ,有可能在找某個 filename 時多找出了以這個名稱為資料夾的檔案,這不是你想要的,你可以用 -r 參數表示要用  regular express 搭配  $ 表示要找最後面,也就是檔名

$ locate -r conf$
/boot/grub/grub.conf
/etc/Trolltech.conf
/etc/anthy-conf q
......

※ locate -n 5 /etc/pa  只顯示前面5筆,當然你也可以搭配 head、tail 來使用,例如: locate /etc/pa | tail -20 找符合的最後20筆

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

使用windows CMD 時間自動校正