Linux 命令(92) locate 命令

2021-09-29 13:24:12 字數 2770 閱讀 6148

locate 命令用於檢視檔案。

如果沒有指定 ——regex,匹配模式可以包含萬用字元(globbing characters)。如果模式不包含萬用字元,則模式等價於*pattern*

作用類似於 find 命令,但是比 find 要快,因為 locate 不像 find 那樣全磁碟搜尋,而是從由 updatedb 命令維護的資料庫(一般為 /var/lib/mlocate/mlocate.db)中進行查詢。預設情況下,locate 不會檢查從資料庫中找到的檔案是否仍然存在,也無法找到在資料庫最近更新之後建立的檔案,因為資料庫的更新有時延。為了避免這種情況,可以在使用 locate 之前,先使用 updatedb 命令手動更新資料庫。

locate [option]... pattern...
-a, --all

只顯示匹配所有模式的條目

-b, --basename

只匹配檔案的基本名。作用與選項 --wholename 相反

-c, --count

只輸出符合匹配模式的檔案的數量

-d, --database dbpath

將預設資料庫替換為 dbpath。該選項可出現多次

-e, --existing

只列印當前存在的檔案

-l, --follow

當檢查檔案是否存在時(如果選項 --existing 指定時),檢查符號鏈結的目標檔案(預設,相反的選項是 --nofollow)

-h, --help

顯示幫助資訊並退出

-i, --ignore-case

比較時忽略大小寫

-l, --limit, -n limit

限制成功匹配的檔案數為 limit

-p, --nofollow, -h

當檢查檔案是否存在時(如果選項 --existing 指定時),不檢查符號鏈結的目標檔案。作用與 --follow 相反

-0, --null

在輸出時使用 ascii nul 字元分隔條目,而不是將每個條目寫在單獨的行上。此選項是為了與 gnu xargs(1)的 --null 選項配合使用而設計的

-s, --statistics

不搜尋檔案,而是顯示每個資料庫的統計資訊

-q, --quiet

不報告關於讀取和處理資料庫時遇到的錯誤的訊息

-r, --regexp regexp

使用正規表示式 regexp 進行搜尋。該選項可出現多次

--regex

將所有模式解釋為擴充套件的正規表示式

-v, --version

輸出 locate 的版本和許可資訊並退出

-w, --wholename

僅將整個路徑名與指定的模式匹配(預設)。如果只匹配檔案基本名,可使用選項 --basename

(1)查詢檔案名為 name 的檔案。

locate -b '\name'
反斜槓 \ 阻止了隱式地將 name 轉為 name。

(2)查詢檔案名包含某個字串的相關檔案。

locate -b

/usr/sbin/ifconfig

/usr/share/man/de/man8/ifconfig.8.gz

/usr/share/man/fr/man8/ifconfig.8.gz

/usr/share/man/man8/ifconfig.8.gz

/usr/share/man/man8/ifconfig_selinux.8.gz

/usr/share/man/pt/man8/ifconfig.8.gz

/usr/share/selinux/devel/html/ifconfig.html

/usr/share/zsh/5.0.2/functions/_ifconfig

(3)查詢配置檔案 mlocate.db。

locate mlocate.db

/usr/share/man/man5/mlocate.db.5.gz

/var/lib/mlocate/mlocate.db

(4)顯示資料庫的統計資訊。

locate -s

database /var/lib/mlocate/mlocate.db:

21,626 directories

230,452 files

15,475,136 bytes in file names

5,711,659 bytes used to store database

(5)搜尋基本正規表示式 regexp 來代替模式。查詢名稱以 mlocate 開頭,以 db 結尾的檔案。

locate -b -r ^mlocate.*db$

/var/lib/mlocate/mlocate.db

(6)查詢最近變動的檔案。使用 locate 命令查不到最近變動過的檔案。為了避免這種情況,可以在使用 locate 之前,先使用 updatedb 命令,手動更新資料庫。

# 無法找到新建的檔案

touch new_file

locate new_file

# 手動更新資料庫後可以查到新建的檔案

updatedb

locate new_file

/root/new_file

[1] locate manual

[2] glob(7)

linux命令(18) locate 命令

locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立乙個包括系統內所有檔名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。在一般的 distribution 之中,資料庫的建立都被放在 c rontab 中自動執行。1 命令格式 loca...

Linux命令之locate命令詳解

locate 讓使用者可以很快的搜尋檔案系統內是否有指定的檔案。其方法是先建立乙個包括系統內所有檔名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。在一般的 distribution 之中,資料庫的建立都被放在 crontab 中自動執行。1.命令格式 locate...

linux命令(37) locate命令

1 命令格式 locate 選擇引數 樣式 2 命令功能 locate命令可以在搜尋資料庫時快速找到檔案,資料庫由updatedb程式來更新,updatedb是由cron daemon週期性建立的,locate命令在搜尋資料庫時比由整個由硬碟資料來搜尋資料來得快,但較差勁的是locate所找到的檔案...