Linux locate 命令詳解

唐青枫發表於2024-11-30

簡介

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)"

相關文章