linux中的locate命令的詳細解釋
linxu下的locate命令可以在搜尋數(shù)據(jù)庫時快速找到檔案,是個很方便的命令。下面由學習啦小編為大家整理了linux的locate命令的詳細解釋的相關知識,希望對大家有幫助!
一、linux中的locate命令的詳細解釋
1.命令格式:
Locate [選擇參數(shù)] [樣式]
2.命令功能:
locate 命令可以在搜尋數(shù)據(jù)庫時快速找到檔案,數(shù)據(jù)庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,locate命令 在搜尋數(shù)據(jù)庫時比由整個由硬盤資料來搜尋資料來得快,但較差勁的是locate所找到的檔案若是最近才建立或 剛更名的,可能會找不到,在內(nèi)定值 中,updatedb每天會跑一次,可以由修改crontab來更新設定值。(etc/crontab)
locate 指定用在搜尋符合條件的檔案,它會去儲存檔案與目錄名稱的數(shù)據(jù)庫內(nèi),尋找合乎范本樣式條件的檔案或目錄錄,可以使用特殊字元(如”*” 或”?”等)來指 定范本樣式,如指定范本為kcpa*ner, locate會找出所有起始字串為kcpa且結尾為ner的檔案或目錄,如名稱為kcpartner若目錄 錄名稱為kcpa_ner則會列出該目錄下包括 子目錄在內(nèi)的所有檔案。
locate 指令和find找尋檔案的功能類似,但locate是透過update程序?qū)⒂脖P中的所有檔案和目錄資料先建立一個索引數(shù)據(jù)庫,在 執(zhí)行l(wèi)oacte時直 接找該索引,查詢速度會較快,索引數(shù)據(jù)庫一般是由操作系統(tǒng)管理,但也可以直接下達update強迫系統(tǒng)立即修改索引數(shù)據(jù)庫。
ps1:updatedb命令用來創(chuàng)建或更新slocate命令所必需的數(shù)據(jù)庫文件。updatedb命令的執(zhí)行過程較長,因為在執(zhí)行時它會遍歷整個系統(tǒng)的目錄樹,并將所有的文件信息寫入slocate數(shù)據(jù)庫文件中
補充說明:slocate本身具有一個數(shù)據(jù)庫,里面存放了系統(tǒng)中文件與目錄的相關信息。
updatedb命令用來創(chuàng)建或更新slocate命令所必需的數(shù)據(jù)庫文件。updatedb命令的執(zhí)行過程較長,因為在執(zhí)行時它會遍歷整個系統(tǒng)的目錄樹,并將所有的文件信息寫入slocate數(shù)據(jù)庫文件中。
3.命令參數(shù):
-e 將排除在尋找的范圍之外。
-1 如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到權限無法看到 的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統(tǒng)中取得檔案的 權限資料。
-f 將特定的檔案系統(tǒng)排除在外,例如我們沒有到理要把 proc 檔案系統(tǒng)中的檔案 放在資料庫中。
-q 安靜模式,不會顯示任何錯誤訊息。
-n 至多顯示 n個輸出。
-r 使用正規(guī)運算式 做尋找的條件。
-o 指定資料庫存的名稱。
-d 指定資料庫的路徑
-h 顯示輔助訊息
-V 顯示程式的版本訊息
二、Linux中的locate命令詳解實例
實例1:查找和android相關的所有文件,并且只顯示前5個
命令:
location android -n 5
輸出:
1 aijian.shi@U-aijian-shi:~$ locate android -n 5
2 /data/nishome/tdsw1/aijian.shi/.android
3 /data/nishome/tdsw1/aijian.shi/.android/adbkey
4 /data/nishome/tdsw1/aijian.shi/.android/adbkey.pub
5 /data/nishome/tdsw1/aijian.shi/.cache/software-center/icons/android-user-es-06-icon-001-001_Portada_AU06x64.png
6 /data/nishome/tdsw1/aijian.shi/.cache/software-center/icons/android-user-es-07-icon-icon_AU07.png
7 aijian.shi@U-aijian-shi:~$
實例2: 搜索alm的bin目錄下所有以i/I開頭的文件
命令:
locate ~/alm/bin/I* -i #-i表示不區(qū)分大小寫
輸出:
1 aijian.shi@U-aijian-shi:~$ locate ~/alm/bin/I* -i
2 /data/nishome/tdsw1/aijian.shi/alm/bin/IntegrityClient
3 /data/nishome/tdsw1/aijian.shi/alm/bin/IntegrityClient.lax
4 /data/nishome/tdsw1/aijian.shi/alm/bin/ident
5 /data/nishome/tdsw1/aijian.shi/alm/bin/im
6 /data/nishome/tdsw1/aijian.shi/alm/bin/integrity
7 aijian.shi@U-aijian-shi:~$
*在shell中表示通配符,表示零個或多個字符。 比如當前目錄下有abc.c、abdd.c、abeff.c??梢杂胠s ab*.c來查看
注意
ps:
Linux手動更新locate數(shù)據(jù)庫命令:
updatedb
輸出:
1 aijian.shi@U-aijian-shi:~/Downloads$ updatedb
2 updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
3 aijian.shi@U-aijian-shi:~/Downloads$
4 aijian.shi@U-aijian-shi:~/Downloads$ sudo updatedb #開啟updatedb手動更新數(shù)據(jù)庫權限
5 [sudo] password for aijian.shi:
6 aijian.shi@U-aijian-shi:~/Downloads$
可以看到,我的linux機器沒有sudo權限,所以無法手動更新數(shù)據(jù)庫。
三、Linux中的locate命令的用法詳解
#查看locate版本信息-V
[plain] view plain copybixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -V
mlocate 0.25
Copyright (C) 2007 Red Hat, Inc. 保留所有權利。
本軟件在 GPL v.2 下發(fā)布。
本程序不提供任何擔保,在法法律允許的范圍內(nèi)予以排除。
#查看locate幫助信息
[plain] view plain copybixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -h
用法: locate [OPTION]... [PATTERN]...
在mlocate數(shù)據(jù)庫中搜索條目.
-b, --basename 匹配唯一的路徑名稱的基本文件名
-c, --count 只顯示找到條目的號碼
-d, --database DBPATH 用 DBPATH 替代默認的數(shù)據(jù)庫(/var/lib/mlocate/mlocate.db)
-e, --existing 只顯示當前存在的文件條目
-L, --follow 當文件存在時跟隨蔓延的符號鏈接 (默認)
-h, --help 顯示本幫助
-i, --ignore-case 匹配模式時忽略大小寫區(qū)別
-l, --limit, -n LIMIT 限制為 LIMIT項目的輸出 (或 計數(shù))
-m, --mmap 忽略向后兼容性
-P, --nofollow, -H 當檢查文件時不跟隨蔓延的符號
鏈接
-0, --null 輸出時以 NUL 分隔項目
-S, --statistics 不搜索項目,顯示有關每個已用數(shù)據(jù)庫的統(tǒng)計信息
-q, --quiet 不報告關于讀取數(shù)據(jù)庫的錯誤消息
-r, --regexp REGEXP 搜索基本正則表達式 REGEXP 來代替模式
--regex 模式是擴展正則表達式
-s, --stdio 忽略向后兼容性
-V, --version 顯示版本信息
-w, --wholename 匹配完整路徑名 (默認)
將 bug 報告給 mitr@redhat.com.
# 查找etc目錄下所有以sh開頭的文件
[plain] view plain copybixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
#查看soft目錄下以android開頭的文件,限定只顯示5個,使用 -n
[plain] view plain copybixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -n 5 /soft/android
/home/bixiaopeng/soft/android-studio
/home/bixiaopeng/soft/android-studio-bundle-130.737825-linux.tgz
/home/bixiaopeng/soft/android-studio/Install-Linux-tar.txt
/home/bixiaopeng/soft/android-studio/LICENSE.txt
/home/bixiaopeng/soft/android-studio/NOTICE.txt
#查找時區(qū)分大小寫
[plain] view plain copybixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate makefile
/usr/share/doc/python3-uno/demo/makefile.mk
/usr/share/emacs/23.4/lisp/cedet/ede/makefile-edit.elc
/usr/share/gtksourceview-3.0/language-specs/makefile.lang
/usr/share/icons/Humanity/mimes/16/gnome-mime-text-x-makefile.svg
/usr/share/icons/Humanity/mimes/22/gnome-mime-text-x-makefile.svg
.....
#查找時不區(qū)分大小寫,使用 -i
[plain] view plain copybixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -i makefile
/usr/src/linux-headers-3.8.0-30/kernel/Makefile
/usr/src/linux-headers-3.8.0-30/kernel/debug/Makefile
/usr/src/linux-headers-3.8.0-30/kernel/debug/kdb/Makefile
/usr/src/linux-headers-3.8.0-30/kernel/events/Makefile
......
# ------------- 使用正規(guī)運算式 做查找的條件 locate -r
#查找以makefile結尾的文件
[plain] view plain copybixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -r makefile$
/usr/src/linux-headers-3.8.0-19/scripts/mkmakefile
/usr/src/linux-headers-3.8.0-19-generic/scripts/mkmakefile
/usr/src/linux-headers-3.8.0-27/scripts/mkmakefile
/usr/src/linux-headers-3.8.0-27-generic/scripts/mkmakefile
/usr/src/linux-headers-3.8.0-29/scripts/mkmakefile
/usr/src/linux-headers-3.8.0-29-generic/scripts/mkmakefile
/usr/src/linux-headers-3.8.0-30/scripts/mkmakefile
/usr/src/linux-headers-3.8.0-30-generic/scripts/mkmakefile
#查找以/var/lib/dpkg/info/開頭的文件
[plain] view plain copybixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -r ^/var/lib/dpkg/info/
/var/lib/dpkg/info/zlib1g:amd64.postinst
/var/lib/dpkg/info/zlib1g:amd64.postrm
/var/lib/dpkg/info/zlib1g:amd64.shlibs
/var/lib/dpkg/info/zlib1g:amd64.symbols
/var/lib/dpkg/info/zlib1g:i386.list
/var/lib/dpkg/info/zlib1g:i386.md5sums
/var/lib/dpkg/info/zlib1g:i386.postinst
/var/lib/dpkg/info/zlib1g:i386.postrm
/var/lib/dpkg/info/zlib1g:i386.shlibs
/var/lib/dpkg/info/zlib1g:i386.symbols