locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。
(1)用法:
用法: Locate [选项] [参数]
(2)功能:
功能: 在mlocate数据库中搜索条目,用来快速查找文件或目录
(3)选项参数:
1) -d<目录>或--database=<目录>: 指定数据库所在的目录
2) -i, --ignore-case 匹配模式时忽略大小写区别
3) --help: 显示帮助
4) --version: 显示版本信息
5) -d, --database DBPATH 用 DBPATH 替代默认的数据库(/var/lib/mlocate/mlocate.db)
(4)实例:
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 报告给 mitr@redhat.com.
(5)其他:
说明:
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则会列出该目录下包括 子目录在内的所有档案。