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