介紹如何在 Linux 系統中使用 locate
指令尋找指定的檔案。
安裝 locate
工具
大部分常見的 Linux 發行版都會安裝 locate
工具,如果您的系統上沒有安裝 locate
,可以使用 apt
或 yum
來安裝:
# 安裝 mlocate 套件(CentOS/RHEL/Fedora) sudo yum install mlocate # 安裝 mlocate 套件(Debian/Ubuntu/Mint) sudo apt install mlocate
更新 locate
資料庫
當安裝完 locate
工具之後,在使用之前必須執行以下指令更新資料庫:
# 更新 mlocate 資料庫
sudo updatedb
預設的 locate
資料庫檔案位於:
# 查看預設 locate 資料庫檔案 ls -l /var/lib/mlocate/mlocate.db
-rw-r----- 1 root mlocate 78268820 7月 26 00:09 /var/lib/mlocate/mlocate.db
快速尋找檔案
在建立好 locate
資料庫之後,就可以使用 locate
快速尋找系統上的檔案,例如尋找含有 .bashrc
關鍵字的檔案:
# 尋找含有 .bashrc 關鍵字的檔案
locate .bashrc
/etc/bash.bashrc /etc/skel/.bashrc /home/chiaujou/.bashrc /home/myuser/.bashrc /home/ubuntu/..bashrc.un~ /home/ubuntu/.bashrc /home/ubuntu/.bashrc~ /snap/core18/2066/etc/bash.bashrc /snap/core18/2066/etc/skel/.bashrc /snap/core18/2066/usr/share/base-files/dot.bashrc /snap/core18/2074/etc/bash.bashrc /snap/core18/2074/etc/skel/.bashrc /snap/core18/2074/usr/share/base-files/dot.bashrc /usr/share/base-files/dot.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
列出符合檔案數量
若要計算符合條件的檔案數量,可以加上 -c
參數:
# 計算含有 .bashrc 關鍵字的檔案數量 locate -c .bashrc
16
不分大小寫
locate
在比對檔案時,預設會區分英文字母的大小寫,若不要區分大小寫,可以加上 -i
參數:
# 不分大小寫 locate -i myfile.txt
/home/ubuntu/myfile.txt /home/ubuntu/MyFile.txt
指定顯示檔案數量
如果不要顯示全部符合的檔案,只要顯示前幾筆找到的結果,可以加上 -n
參數指定顯示的檔案筆數,例如只顯示找到的前 3 個符合的檔案:
# 只顯示找到的前 3 個符合的檔案 locate -n 3 .bashrc
/etc/bash.bashrc /etc/skel/.bashrc /home/chiaujou/.bashrc
跳過已刪除的檔案
由於 locate
是從資料庫中搜尋資料,如果系統上對應的檔案已經刪除了,但資料庫尚未更新,這時候 locate
就有可能列出已經被刪除的檔案。
若要避免 locate
列出已經被刪除的檔案,有兩種方式,第一種就是先手動更新 locate
資料庫之後,再進行搜尋;第二種方式就是加上 -e
參數,跳過已經被刪除的檔案:
# 跳過已經被刪除的檔案 locate -e .bashrc
查看 locate
資料庫狀態
若要查看 locate
資料庫狀態,可以執行 locate
加上 -S
參數:
# 查看 locate 資料庫狀態 locate -S
Database /var/lib/mlocate/mlocate.db: 492,881 directories 2,025,853 files 194,436,807 bytes in file names 78,268,820 bytes used to store database
使用自訂資料庫
如果要使用自訂的 locate
資料庫,可以使用 -d
指令資料庫的路徑:
# 指定 locate 資料庫路徑為 /path/to/my.db locate -d /path/to/my.db .bashrc
忽略錯誤訊息
如果希望 locate
在執行時不要顯示錯誤訊息,可以加上 -q
參數:
# 不要顯示錯誤訊息 locate -q .bashrc