不要 locate 命令,Linux plocate 才是更好的選擇
plocate查找系統上與給定模式匹配的所有文件。基于locate,在更小的索引上提供更快的搜索。
當您需要在 Linux 中搜索某些文件時,您通常可能會使用find或locate命令。不過,現在您有了一個名為plocate的命令。
plocate 通過在搜索字符串中的三元組(三個字節的組合)上創建倒排索引來工作,這允許它快速將候選集縮小到一個非常小的列表,而不是線性掃描每個條目。
plocate得名于激發了它靈感的倒排索引,旨在代替mlocate。雖然它仍然可以updatedb用來創建它的數據庫,plocate也可以使用該plocate-build實用程序來創建索引。
與mlocate不同,當搜索多個字符串時,plocate只返回匹配所有搜索字符串的文件,而不是任何匹配一個字符串的文件。
使用 Plocate 應該可以實現更快的定位實現,因為它利用 liburing 來利用 IO_uring 和 libzstd 來實現更快的 I/O 和更新數據庫的壓縮。
為了顯示該plocate命令的速度,開發人員在該工具的主頁上展示了此基準測試,其中plocate能夠在幾毫秒內找到 2700 萬個文件中的 2 個:
該工具已經得到快速發展。例如,Fedora 36 計劃將 plocate 其locate 用作在文件系統上查找文件的命令的新提供者 。
安裝
Debian 11 Bullseye 及更新版本、Debian 10 Buster 向后移植、Ubuntu 21.04、21.10 及更新版本:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install plocate
Arch Linux 及其衍生產品:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo pacman -S plocate
Fedora:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo dnf install plocate
如何使用plocate
現在您可以開始使用plocate。首先你需要創建它的數據庫(文件索引):
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo updatedb
plocate查找文件的觸發命令非常簡單明了。例如,要搜索名為的文件, linuxmi.com.py 請鍵入:
- linuxmi@linuxmi:~/www.linuxmi.com$ plocate linuxmi.com.py
如果您找不到某些文件,則可能有兩個罪魁禍首:
1. 首先,檢查數據庫最近是否有更新。大多數用戶會想要使用 plocate 的updatedb.
有一個服務和一個定時器來定期更新數據庫。您可以啟用它,它會自動觸發服務:
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl enable plocate-updatedb.timer
- linuxmi@linuxmi:~/www.linuxmi.com$ sudo systemctl start plocate-updatedb.timer
2. 文件未顯示的另一個原因通常是權限。檢查您是否可以以 root 身份找到這些文件,如果可以,問題很可能是您沒有從根目錄開始一直訪問該目錄的權限。
【編輯推薦】