在Linux中找到命令

在Linux上工作時,最常見的操作之一是搜索文件和目錄。 Linux系統上有幾個命令可讓您搜索文件,而find和locate是最常用的文件。

locate 命令是按文件和目錄名稱搜索的最快,最簡單的方法。

在本文中,我們將說明如何使用 locate 命令。

正在安裝 locate (找不到定位命令)

根據發行版和系統的配置方式,定位包可能會或可能不會預裝在Linux系統上。

檢查是否 locate 安裝了實用程序,打開您的終端,鍵入 locate 然後按 Enter。 如果安裝了軟件包,系統將顯示 locate: no pattern to search for specified。 否則,您會看到類似 locate command not found

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

安裝 locate 在Ubuntu和Debian上

sudo apt update sudo apt install mlocate

安裝 locate 在CentOS和Fedora上

sudo yum install mlocate

如何 locate 工作編號

locate 命令通過數據庫生成的數據庫文件搜索給定的模式 updatedb 命令。 找到的結果顯示在屏幕上,每行一個。

在安裝mlocate軟件包的過程中,將創建一個cron作業,該作業將運行 updatedb 每24小時命令一次。 這樣可以確保數據庫得到定期更新。 有關cron作業的更多信息,請檢查 /etc/cron.daily/mlocate 文件。

可以通過運行手動更新數據庫 updatedb 以root或具有sudo特權的用戶:

sudo updatedb

更新過程將花費一些時間,具體取決於文件和目錄的數量以及系統的速度。

數據庫更新後創建的文件將不會顯示在查找結果中。

比起更強大 find 搜索文件系統的命令, locate 操作速度更快,但缺少許多功能,並且只能按文件名進行搜索。

如何使用 locate 命令#

的語法 locate 命令如下:

locate [OPTION] PATTERN...

在最基本的形式下,如果不帶任何選項使用, locate 命令將打印與搜索模式匹配並且用戶具有讀取權限的所有文件和目錄的絕對路徑。

例如搜索名為 .bashrc 您將輸入:

locate .bashrc

輸出將包含所有包含字符串的文件的名稱 .bashrc 以他們的名字:

/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxize/.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/linuxize/p1/readme.md
/home/linuxize/p2/README.md
/home/linuxize/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 命令在文件系統中搜索名稱與給定模式匹配的文件和目錄。 該命令語法易於記憶,並且結果幾乎立即顯示出來。

有關的所有可用選項的更多信息 locate 命令類型 man locate 在您的終端中。

如有任何疑問,請隨時發表評論。

終端定位

Sidebar