您好,登錄后才能下訂單哦!
小編今天帶大家了解Linux系統locate命令的使用方法是什么,文中知識點介紹的非常詳細。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內容,希望能夠幫助更多想解決這個問題的朋友找到問題的答案,下面跟著小編一起深入學習“Linux系統locate命令的使用方法是什么”的知識吧。
1.1 簡述
locate
命令用于查找文件或目錄。locate命令要比find -name
快得多,原因在于它不搜索具體目錄,而是搜索一個數據庫/var/lib/mlocate/mlocate.db。這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次。因此,我們在用whereis 和 locate查找文件時,有時會找到已經被刪除的數據;或者剛剛建立的文件,卻無法查找到,原因就是因為數據庫文件沒有被更新。為了避免這種情況,可以在使用locate之前,先使用updatedb
命令,手動更新數據庫。整個locate工作其實是由4部分組成的:
/usr/bin/updatedb: 主要用來更新數據庫,通過crontab自動完成的
/usr/bin/locate: 查詢文件位置
/etc/updatedb.conf: updatedb的配置文件
/var/lib/mlocate/mlocate.db: 存放文件信息的文件
locate
會讀取由updatedb準備好的一個或多個數據庫,然后將滿足匹配PATTERN
的文件寫到標準輸出,每行一個文件名。假如并未指定--regex
選項,則PATTERN
可以包含通配符。假如PATTERN
中并未包含任何通配符,則locate命令以*PATTERN*
模式進行查找。
默認情況下,locate命令并不會檢查數據庫中的文件是否仍然存在,也不會報告在上一次更新數據庫之后產生的文件。
locate [OPTION]... [PATTERN]...
-A, --all 打印所有匹配PATTERNs的文件 -b, --basename 只名稱與PATTERNs匹配的文件(例如/test/test.txt,則basename為test.txt) -c, --count 只打印匹配到的文件數目,而不是文件名本身 -d, --database DBPATH 用DBPATH來代替默認的數據庫。DBPATH是一個以:(冒號)分割的數據庫名稱列表 -e, --existing 只打印在調用locate時存在的文件 -L, --follow 當和-e選項一起使用時,如果該文件是一個軟鏈接文件,則會獲取到該軟鏈接對應的實際文件(此為locate命令默認行文)。 -h, --help 打印幫助文檔信息 -i, --ignore-case 當進行文件模式匹配時,忽略大小寫 -l, --limit, -n LIMIT 當成功匹配到LIMIT數量的文件時,退出 -P, --nofollow, -H 當和-e選項一起使用時,如果該文件是一個軟鏈接文件,此時不跟隨鏈接的實際文件 -0, --null 輸出時以ASCII NUL作為分隔符 -S, --statistics 獲得每一個搜索數據庫的統計信息 -q, --quiet 當在讀取和處理數據庫時,遇到錯誤也不打印相關信息 -r, --regexp REGEXP 查找一個基本的模式匹配REGEXP。此選項情況下,不能出現PATTERNs -V, --version 打印locate的版本信息和license信息 -w, --wholename 匹配完整路徑名(默認)
例如查找一個文件名稱為NAME(并不是*NAME*)
的文件,可以使用如下:
# locate -b '\NAME'
應為\
本身是一個通配字符,因此這里會禁止隱式的轉化為*NAME*
.
1) 搜索目錄下所有以sh開頭的文件
# locate /etc/sh /etc/shadow /etc/shadow- /etc/shells
2) 包含某個字符串的相關文件
# locate passwd /etc/passwd /etc/passwd- /etc/pam.d/passwd /etc/security/opasswd /usr/bin/gpasswd /usr/bin/grub2-mkpasswd-pbkdf2 /usr/bin/kpasswd /usr/bin/lppasswd /usr/bin/passwd /usr/bin/smbpasswd ....
3) 限定顯示數量
如果顯示的內容過多,可以使用-n
選項來限定顯示數量。
# locate -n 5 passwd /etc/passwd /etc/passwd- /etc/pam.d/passwd /etc/security/opasswd /usr/bin/gpasswd
4) 使用正則表達式
當需要查找符合特定規則的信息時,可以使用-r
選項匹配相應的正則表達式
//查找以 /var/lib/rpm 開頭的文件 # locate -r ^/var/lib/rpm /var/lib/rpm /var/lib/rpm-state /var/lib/rpm/.dbenv.lock /var/lib/rpm/.rpm.lock .... //查找以 zip 結尾的文件 # locate -r zip$ /usr/bin/funzip /usr/bin/gpg-zip /usr/bin/gunzip /usr/bin/gzip /usr/bin/mzip /usr/bin/unzip /usr/bin/zip /usr/lib64/libreoffice/share/config/images.zip /usr/lib64/libreoffice/share/config/images_crystal.zip ....
5) 判斷某一目錄下的文件是否存在(軟鏈接)
# ls ../lib | while read line; do if [ -f ../lib/$line ]; then temp="$(locate "$line")"; if [ -n "$temp" ]; then echo $line; fi fi done
PRUNE_BIND_MOUNTS = "yes" PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs" PRUNENAMES = ".git .hg .svn" PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"
PRUNE_BIND_MOUNTS
: 表示是否進行限制搜索
PRUNEFS
: 表示排除檢索的文件系統類型
PRUNENAME
: 表示排除檢索的文件類型
PRUNEPATHS
: 表示排除檢索的文件目錄
感謝大家的閱讀,以上就是“Linux系統locate命令的使用方法是什么”的全部內容了,學會的朋友趕緊操作起來吧。相信億速云小編一定會給大家帶來更優質的文章。謝謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。