locate - Arch Linux 中文维基

跳至內容

# locate

出自 Arch Linux 中文维基

相關文章

- find
- 核心工具
- 應用程式列表/工具#文件搜索

翻譯狀態：

- 本文（或部分內容）譯自 locate，最近一次同步於 2025-03-02，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

locate （即定位）是一種常用的 Unix 工具，用於通過文件名快速查找文件。與 find 工具相比，locate 通過搜索預先構建的資料庫文件，而不是直接搜索文件系統，提高了查找速度。這種方法的缺點是，`locate` 無法檢測到資料庫文件生成後的更改。通過按計劃更新資料庫，可以將這一問題降至最低。

隨著時間的推移，各種替代實現經歷了迭代更替：從僅顯示用戶可訪問文件的 slocate（secure locate，安全定位），到每次更新時合併資料庫的 mlocate（merging locate，合併定位）——這種合併機制通過跳過已檢查文件實現了性能提升，再到如今基於倒排列表構建的 plocate（posting locate，列表定位），它通過預先處理資料庫生成速度更快、體積更小的索引。

## 安裝

安裝 plocate包 軟體包。它提供了 `plocate`、`updatedb`、`plocate-build` 等命令以及指向 `plocate` 的符號連結 `locate`、`mlocate`。

雖然 GNU findutils 也包含 locate 實現，但 Arch 的 findutils包 軟體包並不包含。

LS-Shandong 維護了一個 plocate 分叉，這個分叉包含了 Steinar 正考慮合併入官方 plocate 的 i18n 支持及軟體的簡體中文翻譯和手冊頁翻譯。安裝 plocate-enhanced-gitAUR 軟體包以獲取它。

## 用法

在使用 plocate(1) 之前，需要先創建資料庫，這可以通過 updatedb(8) 命令完成，顧名思義，該命令用於更新資料庫。

plocate包 包含一個 `plocate-updatedb.timer` 單元，每天都會調用資料庫更新，安裝時已啟用。如果想在重啟前使用，請手動啟動啟動。您也可以隨時以根用戶身份手動運行 updatedb。

為節省時間，（默認情況下）可以通過編輯 `/etc/updatedb.conf` 配置 updatedb 忽略某些文件系統和路徑。updatedb.conf(5) 介紹了該文件的語義。值得注意的是，默認配置（`PRUNEPATHS`）中忽略的路徑包括 `/media` 和 `/mnt`，因此 locate 可能無法發現外部設備上的文件。

## 問題解決

### Btrfs

默認配置會阻止結果中包含 Btrfs 文件系統。要允許包含 btrfs 掛載點，請添加

    /etc/updatedb.conf

    PRUNE_BIND_MOUNTS = "no"

當然，這也意味著其他綁定掛載點也會被包含在內。如果需要排除這些掛載點，可以使用同一配置文件中的 `PRUNEPATHS` 設置。

## 參見

- How locate works and rewrite it in one minute
- plocate 官方網站

分類：​

- 搜索

locate
新增話題