簡介
locate
命令用於透過查詢預構建的資料庫來快速搜尋檔案和目錄,該資料庫包含來自檔案系統的索引檔案路徑。它比 find
之類的命令要快得多,因為它不會實時搜尋整個檔案系統。
關鍵概念
locate
命令依賴於資料庫,通常位於/var/lib/mlocate/mlocate.db
,資料庫檔案會定期透過後臺程序任務更新。- 因為資料庫更新不是實時的,最新建立的檔案可能不會被查詢到,直到下次資料庫更新。
安裝
# Debian/Ubuntu
sudo apt update
sudo apt install mlocate
# CentOS/RHEL/Fedora
sudo yum install mlocate
sudo updatedb # 初始化資料庫
示例用法
搜尋指定的檔案
locate [filename]
locate example.txt
搜尋部分匹配項
locate [example]
# 示例輸出如下:
# /home/user/documents/example.txt
# /home/user/example_folder
搜尋時不區分大小寫
locate -i [Example]
顯示輸出的結果條數
locate -n 5 filename
配合 grep
使用
locate [filename] | grep '/home/user'
搜尋實際的檔案系統,不透過資料庫
locate -e filename
更新本地資料庫
sudo updatedb
從資料庫中排除目錄
修改 /etc/updatedb.conf
檔案,新增如下示例行:
PRUNEPATHS="/tmp /var/tmp /var/cache"
統計匹配到的結果數
locate [filename] | wc -l
locate -c [filename]
查詢以指定字尾結尾的檔案
locate *.log
查詢最近修改的檔案
sudo updatedb
locate [example] | grep "$(date +%Y-%m-%d)"
結合正規表示式使用
locate --regex -i "(\.mp4|\.avi)"