歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 每天一個Linux命令(18)loacte命令

每天一個Linux命令(18)loacte命令

日期:2017/3/3 12:45:24   编辑:Linux技術

locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。[b] (1)用法:[/b]

[b] 用法: Locate [選項] [參數][/b][b] (2)功能:[/b]

功能: 在mlocate數據庫中搜索條目,用來快速查找文件或目錄

[b] (3)選項參數:[/b] 1) -d<目錄>或--database=<目錄>:            指定數據庫所在的目錄

2) -i, --ignore-case                    匹配模式時忽略大小寫區別 3) --help:                         顯示幫助

4) --version:                        顯示版本信息 5) -d, --database DBPATH                 用 DBPATH 替代默認的數據庫(/var/lib/mlocate/mlocate.db)

[b] (4)實例:[/b] 1)[root@localhost Documents]# loacte less1       在各個目錄下查找名為less1的這個文件或者文件夾

[root@localhost Documents]# ll
總用量 20
-rw-r--r--. 1 root root 664 5月   9 07:59 head_text
-rw-r--r--. 1 root root  45 5月   9 08:15 less1
-rw-r--r--. 1 root root  57 5月   9 08:16 less2
-rw-r--r--. 1 root root 259 5月  12 21:53 tail_text
-rw-r--r--. 1 root root 216 5月  12 22:24 tempory
[root@localhost Documents]# slocate less1                                     //經驗證,已經沒有slocate這個命令
bash: slocate: 未找到命令...
相似命令是: 'locate'
[root@localhost Documents]# loacte less1
bash: loacte: 未找到命令...
相似命令是: 'locate'
2)[root@localhost Documents]# locate Documents             如果是搜索的是文件夾的名稱,則默認會先顯示該文件夾及以下的各個文件及文件夾

[root@localhost Documents]# locate Documents
/home/sunjimeng/Documents
/home/sunjimeng/Documents/head_text
/home/sunjimeng/Documents/less1
/home/sunjimeng/Documents/less2
/home/sunjimeng/Documents/tail_text
/home/sunjimeng/Documents/tempory
/usr/share/dbus-1/services/org.gnome.Documents.GDataMiner.service
/usr/share/dbus-1/services/org.gnome.Documents.SearchProvider.service
/usr/share/dbus-1/services/org.gnome.Documents.ZpjMiner.service
/usr/share/glib-2.0/schemas/org.gnome.Documents.enums.xml
3)[root@localhost Documents]# locate newlocate 和updatedb 為了避免新建的文件夾找不到,可以立即更新數據庫(updatedb命令)        

[root@localhost Documents]# touch newlocate                          //新建文件
[root@localhost Documents]# ll                        //已經存在
總用量 20
-rw-r--r--. 1 root root 664 5月   9 07:59 head_text
-rw-r--r--. 1 root root  45 5月   9 08:15 less1
-rw-r--r--. 1 root root  57 5月   9 08:16 less2
-rw-r--r--. 1 root root   0 5月  15 18:21 newlocate
-rw-r--r--. 1 root root 259 5月  12 21:53 tail_text
-rw-r--r--. 1 root root 216 5月  12 22:24 tempory
[root@localhost Documents]# locate newlocate                         //但並找不到
[root@localhost Documents]# updatedb                    //更新數據庫
[root@localhost Documents]# locate newlocate                //待計算機反應2秒後,再執行locate命令,就能找到了
/home/sunjimeng/Documents/newlocate
4)查找指定目錄下的某個文件,也可以用通配符

[root@localhost /]# locate /home/sunjimeng/Documents/*e
/home/sunjimeng/Documents/newlocate
5)[root@localhost /]# locate -i /home/sunjimeng/Documents/*Cate 在使用通配符時忽略大小寫

[root@localhost /]# locate -i /home/sunjimeng/Documents/*Cate
/home/sunjimeng/Documents/newlocate
[root@localhost /]# locate  /home/sunjimeng/Documents/*Cate
[root@localhost /]#
6)[root@localhost /]# locate /home/sunjimeng/Documents/le 尋找以特定字符串開頭的文件或文件夾

[root@localhost /]# locate /home/sunjimeng/Documents/le                                    //不加通配符也可以
/home/sunjimeng/Documents/less1
/home/sunjimeng/Documents/less2
[root@localhost /]# locate /home/sunjimeng/Documents/le*                     
/home/sunjimeng/Documents/less1
/home/sunjimeng/Documents/less2
[root@localhost /]#
7)[root@localhost Documents]# locate --help

[root@localhost Documents]# locate --help
Usage: locate [OPTION]... [PATTERN]...
Search for entries in a mlocate database.

  -A, --all              only print entries that match all patterns
  -b, --basename         match only the base name of path names
  -c, --count            only print number of found entries
  -d, --database DBPATH  use DBPATH instead of default database (which is
                         /var/lib/mlocate/mlocate.db)
  -e, --existing         only print entries for currently existing files
  -L, --follow           follow trailing symbolic links when checking file
                         existence (default)
  -h, --help             print this help
  -i, --ignore-case      ignore case distinctions when matching patterns
  -l, --limit, -n LIMIT  limit output (or counting) to LIMIT entries
  -m, --mmap             ignored, for backward compatibility
  -P, --nofollow, -H     don't follow trailing symbolic links when checking file
                         existence
  -0, --null             separate entries with NUL on output
  -S, --statistics       don't search for entries, print statistics about each
                         used database
  -q, --quiet            report no error messages about reading databases
  -r, --regexp REGEXP    search for basic regexp REGEXP instead of patterns
      --regex            patterns are extended regexps
  -s, --stdio            ignored, for backward compatibility
  -V, --version          print version information
  -w, --wholename        match whole path name (default)

將 bug 報告給 [email protected].
[b] (5)其他:[/b]

說明:

locate命令其實是find -name的另一種寫法,但是要比後者快得多,原因在於它不搜索具體目錄,而是搜索一個數據庫/var/lib/locatedb,這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。locate命令可以在搜尋數據庫時快速找到檔案,數據庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,locate命令在搜尋數據庫時比由整個由硬盤資料來搜尋資料來得快,但較差勁的是locate所找到的檔案若是最近才建立或 剛更名的,可能會找不到,在內定值中,updatedb每天會跑一次,可以由修改crontab來更新設定值。(etc/crontab)

locate指定用在搜尋符合條件的檔案,它會去儲存檔案與目錄名稱的數據庫內,尋找合乎范本樣式條件的檔案或目錄錄,可以使用特殊字元(如”*” 或”?”等)來指定范本樣式,如指定范本為kcpa*ner, locate會找出所有起始字串為kcpa且結尾為ner的檔案或目錄,如名稱為kcpartner若目錄錄名稱為kcpa_ner則會列出該目錄下包括 子目錄在內的所有檔案

Copyright © Linux教程網 All Rights Reserved