说明
Linux系统里面有一个名为mlocate.db的数据库文件,这个文件系统包含系统文件的文件名及对应的路径信息。locate命令查找文件时就不用遍历磁盘,而是直接查找mlocate.db文件,这样可以快速定位。但是会有一个问题,如果新添加的文件,那么mlocate.db文件就没有记录,因此使用locate命令时可以先用updatedb命令更新一下mlocate.db数据库文件。当然,mlocate.db还会由系统自带的定时任务执行updatedb命令来定时更新。
mlocate.db文件在/var/lib/mlocate/mlocate.db,如果没有估计是没有安装,所以执行:yum install mlocate安装
#mlocal.db所在位置
[root@localhost ~]# ll -h /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 2.0M May 26 10:21 /var/lib/mlocate/mlocate.db
#定时任务所在文件
[root@localhost ~]# cat /etc/cron.daily/mlocate
#!/bin/sh
nodevs=$(awk '$1 == "nodev" && $2 != "rootfs" && $2 != "zfs" { print $2 }' < /proc/filesystems)
renice +19 -p $$ >/dev/null 2>&1
ionice -c2 -n7 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"
格式
locate [option] [filename]
常用参数
-c:不显示匹配的内容,只显示匹配的行数
-r:支持基本的正则表达式
-i:匹配是忽略大小写
--regex:支持扩展正则表达式
示例
1、查找文件路径
[root@localhost ~]# locate pwd
/apps/go1.10.1/src/syscall/pwd_plan9.go
/apps/gowork/src/github.com/golang/sys/plan9/pwd_go15_plan9.go
/apps/gowork/src/github.com/golang/sys/plan9/pwd_plan9.go
/etc/.pwd.lock
/usr/bin/pwd
/usr/bin/pwdx
/usr/include/pwd.h
/usr/lib/modules/3.10.0-123.9.3.el7.x86_64/kernel/drivers/watchdog/hpwdt.ko
/usr/lib64/cracklib_dict.pwd
/usr/lib64/python2.7/lib-dynload/spwdmodule.so
/usr/sbin/unix_chkpwd
/usr/share/cracklib/cracklib-small.pwd
/usr/share/cracklib/pw_dict.pwd
/usr/share/man/man1/pwd.1.gz
/usr/share/man/man1/pwdx.1.gz
/usr/share/man/man8/unix_chkpwd.8.gz
/usr/share/man/mann/pwd.n.gz
2、查找匹配的行
[root@localhost ~]# locate -c pwd
17
3、使用通配符查找文件路径
[root@localhost ~]# locate /usr/bin/pwd
/usr/bin/pwd
/usr/bin/pwdx
[root@localhost ~]# locate /etc/sh*
/etc/shadow
/etc/shadow-
/etc/shells
4、新建文件测试
[root@localhost ~]# touch xiao.txt
[root@localhost ~]# locate /root/xiao.txt #没有在里面,所以需要使用到下一节里面的updatedb
[root@localhost ~]# updatedb
[root@localhost ~]# locate /root/xiao.txt
/root/xiao.txt