首頁 > 軟體

Linux 中的 locate 命令詳解

2020-06-16 16:34:21

在 Linux 上工作時最常見的操作之一是搜尋檔案和目錄。在 Linux 系統中,有幾個命令,它允許你搜尋檔案與 find 和 locate 是最常用的。

該 locate 命令是按名稱搜尋檔案和目錄的最快捷,最簡單的方法。

在本教學中,我們將解釋如何使用該 locate 命令。

安裝 locate

根據發行版本的情況以及系統的設定方式,可以在 Linux 系統上預安裝定位包,也可以不預先安裝。

要檢查系統上是否 locate 安裝了該實用程式,請開啟終端,鍵入 locate 並按 Enter 。如果安裝了包,系統將顯示 locate: no pattern to search for specified ,否則你會看到類似的東西 locate command not found

如果 locate 未安裝,您可以使用發行版的軟體包管理器輕鬆安裝它。

Ubuntu 和 Debian 上安裝 locate

sudo apt update
sudo apt install mlocate

CentOSFedora 上安裝 locate

sudo yum install mlocate

locate 如何工作

locate 命令通過 updatedb 命令生成的資料庫檔案搜尋給定模式。找到的結果顯示在螢幕上,每行一個。

在 mlocate 軟體包安裝期間,會建立一個每 24 小時執行一次 updatedb 命令的 cron 作業。這可確保定期更新資料庫。有關 cron 作業的更多資訊,請檢查該 /etc/cron.daily/mlocate 檔案。

可以通過以 root 身份或使用 sudo 許可權的使用者執行 updatedb 命令來手動更新資料庫:

sudo updatedb

更新過程將需要一些時間,具體取決於檔案和目錄的數量以及系統的速度。

資料庫更新後才建立的檔案不會顯示在定位結果中。

與 find 搜尋檔案系統的更強大的命令相比, locate 操作速度更快但缺少許多功能,並且只能通過檔名進行搜尋。

如何使用 locate 命令

該 locate 命令的語法如下:

locate [OPTION] PATTERN...

在最基本的形式中,當沒有任何選項時, locate 命令將列印與搜尋模式匹配且使用者具有讀取許可權的所有檔案和目錄的絕對路徑。

例如,要搜尋名為的檔案, .bashrc 您可以鍵入:

locate .bashrc

輸出將包含名稱中包含字串的所有檔案 .bashrc 的名稱:

/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxidc/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc

該 /root/.bashrc 檔案將不會顯示,因為我們使用作為普通使用者執行該命令的,該使用者對該 /root 目錄沒有存取許可權。

如果結果列表很長,為了更好的可讀性,您可以將輸出傳遞給 less 命令:

locate .bashrc | less

該 locate 命令還接受包含萬用字元(如萬用字元)的模式 * 。當模式不包含萬用字元是,將要搜尋 *PATTERN* ,這就是為什麼在前面的範例中顯示了名稱中包含搜尋模式的所有檔案。

萬用字元是用於表示零個,一個或多個字元的符號。例如,要搜尋 .md 系統上的所有檔案,您將使用:

locate *.md

要限制搜尋結果的數量,請使用 -n 選項,後跟要顯示的結果數。例如,以下命令將搜尋所有 .py 檔案並僅顯示 10 個結果:

locate -n 10 *.py

預設情況下, locate 執行區分大小寫的搜尋。 -i(--ignore-case) 選項告訴 locate 在搜尋時忽略大小寫。

locate -i readme.md
/home/linuxidc/p1/readme.md
/home/linuxidc/p2/README.md
/home/linuxidc/p3/ReadMe.md

要顯示所有匹配條目的計數,請使用 -c(--count) 選項。以下命令將返回其名稱中包含 .bashrc 的所有檔案的數量:

locate -c .bashrc
6

預設情況下, locate 不檢查詢到的檔案是否仍存在於檔案系統上。如果在最新資料庫更新後刪除檔案,如果檔案與搜尋模式匹配,則它將包含在搜尋結果中。

要僅顯示 locate 執行時存在的檔案的名稱,請使用 -e(--existing) 選項。例如,以下內容僅返回現有 .json 檔案:

locate -e *.json

如果您需要執行更複雜的搜尋,可以使用 -r(--regexp) 選項,該選項允許您使用基本正規表示式而不是模式進行搜尋。可以多次指定此選項。 例如,要在系統中搜尋所有 .mp4 與 .avi 檔案,而忽略你可以執行情況:

locate --regex -i "(.mp4|.avi)"

結論

該 locate 命令在檔案系統中搜尋名稱與給定模式匹配的檔案和目錄。命令語法易於記憶,結果幾乎立即顯示。

在終端中執行 man locate 可以檢視 locate 命令的所有可用選項的更多資訊。

如果您有任何問題,請隨時發表評論。


IT145.com E-mail:sddin#qq.com