L36.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- locate和updatedb

5.11 locate:快速定位文件路径

5.11.1 命令详解

【命令星级】 ★★★★☆

【功能说明】

​ 在Linux系统里有一个名为mlocate.db的数据库文件,这个文件包含系统文件的文件名及对应的路径信息。故而,locate命令查找文件时不用遍历磁盘,而是直接查找mlocate.db文件,这样可以快速给出结果。但这也会存在一个问题,如果是新添加的文件,那么mlocate.db文件就会没有记录,对此,在使用locate命令时可以先用updatedb命令更新一下mlocate.db数据库文件。当然,mlocate.db还会由系统自带的定时任务执行updatedb命令定期更新。

​ 特别提示:该命令软件包在CentOS 7中默认未安装,如果需要使用此命令,则要提前安装和配置,具体命令如下:

[root@centos7 ~]# locate neteagle.txt 
-bash: locate: command not found	#默认没有安装locate命令。
[root@centos7 ~]# yum install -y mlocate	#安装命令对应的软件包。
[root@centos7 ~]# updatedb	#初始化命令查找的数据库。

【语法格式】

locate [option] [pattern]
locate [选项] [文件名]

​ **说明:**locate命令用于从数据库查找指定的命令。

【选项说明】

​ 表5-11针对locate命令的参数选项进行了说明。

​ 表5-11 locate命令的参数选项及说明
在这里插入图片描述

5.11.2 使用范例

​ **范例5-30:**通过locate命令查看数据库。

[root@centos7 ~]# ll -h /var/lib/mlocate/mlocate.db #locate查找的数据库文件。
-rw-r-----. 1 root slocate 2.0M Oct 10 19:03 /var/lib/mlocate/mlocate.db
[root@centos7 ~]# 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"
[root@centos6 ~]# cat /etc/cron.daily/mlocate.cron	# 系统自带的定时任务脚本,CentOS 6的名称为mlocate.cron。
#!/bin/sh
nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "zfs" { print $2 }')
renice +19 -p $$ >/dev/null 2>&1
ionice -c2 -n7 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"

​ **范例5-31:**查找文件路径

[root@centos7 ~]# locate pwd	#直接跟想要查找的文件名,主要是包含pwd字符串的都能找出来。
/etc/.pwd.lock
/etc/latrace.d/headers/pwd.h
/usr/bin/pwd
/usr/bin/pwdx
/usr/include/pwd.h
/usr/lib/modules/3.10.0-1127.19.1.el7.x86_64/kernel/drivers/watchdog/hpwdt.ko.xz
/usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/watchdog/hpwdt.ko.xz
/usr/lib/x86_64-redhat-linux6E/include/pwd.h
/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/nmap/nselib/unpwdb.lua
/usr/share/nmap/nselib/data/psexec/pwdump.lua
/usr/src/kernels/3.10.0-1127.19.1.el7.x86_64/include/config/hpwdt
/usr/src/kernels/3.10.0-1127.19.1.el7.x86_64/include/config/hpwdt/nmi
/usr/src/kernels/3.10.0-1127.19.1.el7.x86_64/include/config/hpwdt/nmi/decoding.h
/usr/src/kernels/3.10.0-957.el7.x86_64/include/config/hpwdt
/usr/src/kernels/3.10.0-957.el7.x86_64/include/config/hpwdt/nmi
/usr/src/kernels/3.10.0-957.el7.x86_64/include/config/hpwdt/nmi/decoding.h
[root@centos7 ~]# locate -c pwd	#只显示匹配的行数。
24

​ **范例5-32:**使用通配符查找文件路径。

[root@centos7 ~]# locate /etc/sh	#只要部分符合就输出。
/etc/shadow
/etc/shadow-
/etc/shells
[root@centos7 ~]# locate /etc/sh*	#还可以使用通配符。
/etc/shadow
/etc/shadow-
/etc/shells
[root@centos7 ~]# locate -c /etc/*sh*
24

5.12 updatedb:更新mlocate数据库

5.12.1 命令详解

【命令星级】 ★★★☆☆

【功能说明】

​ updatedb命令可以创建或更新locate命令使用的数据库。updatedb命令会被定时任务定期(每天)执行,此命令与locate在一个软件包里,在CentOS 7下需要单独安装,见locate命令的安装方法。

【语法格式】

updatedb [option]
updatedb [选项]

【选项说明】

​ 表5-12针对updatedb命令的参数选项进行了说明。

​ 表5-12 updatedb命令的参数选项及说明

在这里插入图片描述

5.12.2 使用范例

​ **范例5-33:**查看数据库

[root@centos7 ~]# ll -h /var/lib/mlocate/mlocate.db #这就是要被更改的数据库文件。
-rw-r-----. 1 root slocate 2.0M Oct 10 19:03 /var/lib/mlocate/mlocate.db

​ **范例5-34:**更新数据库。

[root@centos7 ~]# locate neteagle	#查看包含neteagle的文件。
/neteagle
/data/neteagle.txt
/data/neteagle2.txt
/home/neteagle
/home/neteagle1
/home/neteagle2
/home/neteagle/.bash_logout
/home/neteagle/.bash_profile
/home/neteagle/.bashrc
/home/neteagle1/.bash_logout
/home/neteagle1/.bash_profile
/home/neteagle1/.bashrc
/home/neteagle2/.bash_logout
/home/neteagle2/.bash_profile
/home/neteagle2/.bashrc
/neteagle/test
/root/neteagle
/root/neteagle.txt
/root/neteagle2.txt
/root/neteagle/arp.zip
/root/neteagle/neteagle.jpg
/root/neteagle/neteagle.ppt
/root/neteagle/test.doc
/root/neteagle/xiaodong
/root/test/neteagle
/var/spool/mail/neteagle
/var/spool/mail/neteagle1
/var/spool/mail/neteagle2
[root@centos7 ~]# touch neteagle20201010
[root@centos7 ~]# locate neteagle	#再次查看,发现新建的neteagle20201010文件没有显示。
/neteagle
/data/neteagle.txt
/data/neteagle2.txt
/home/neteagle
/home/neteagle1
/home/neteagle2
/home/neteagle/.bash_logout
/home/neteagle/.bash_profile
/home/neteagle/.bashrc
/home/neteagle1/.bash_logout
/home/neteagle1/.bash_profile
/home/neteagle1/.bashrc
/home/neteagle2/.bash_logout
/home/neteagle2/.bash_profile
/home/neteagle2/.bashrc
/neteagle/test
/root/neteagle
/root/neteagle.txt
/root/neteagle2.txt
/root/neteagle/arp.zip
/root/neteagle/neteagle.jpg
/root/neteagle/neteagle.ppt
/root/neteagle/test.doc
/root/neteagle/xiaodong
/root/test/neteagle
/var/spool/mail/neteagle
/var/spool/mail/neteagle1
/var/spool/mail/neteagle2
[root@centos7 ~]# updatedb -vU /root	#-v显示更新过程,-U指定更新路径。
/root/.bash_logout
/root/.bash_profile
/root/.bashrc
/root/.cshrc
/root/.tcshrc
/root/anaconda-ks.cfg
/root/.bash_history
/root/.lesshst
/root/test
/root/hello.txt
/root/test.txt
/root/test1.txt
/root/test3.txt
/root/opt_sysctl.sh
/root/exportfs_usage.sh
/root/menu.sh
/root/test2.txt
/root/neteagle.txt
/root/.viminfo
/root/neteagle2.txt
/root/a.txt
/root/b.txt
/root/neteagle
/root/netealge_link.txt
/root/neteagle20201010
/root/neteagle/neteagle.jpg
/root/neteagle/arp.zip
/root/neteagle/test.doc
/root/neteagle/neteagle.ppt
/root/neteagle/xiaodong
/root/test/.file4.txt
/root/test/dir5
/root/test/neteagle
/root/test/dir5/sub1
/root/test/dir5/file1.txt
/root/test/dir5/file2.txt
/root/test/dir5/file6.txt
/root/test/dir5/dir2
/root/test/dir5/dir3
/root/test/dir5/dir2/dir1
/root/test/dir5/dir2/dir1/sub1
/root/test/dir5/dir2/dir1/sub1/test
/root/test/dir5/sub1/test
[root@centos7 ~]# locate neteagle	#再次查看发现neteagle20201010文件出现了。
/root/neteagle
/root/neteagle.txt
/root/neteagle2.txt
/root/neteagle20201010
/root/neteagle/arp.zip
/root/neteagle/neteagle.jpg
/root/neteagle/neteagle.ppt
/root/neteagle/test.doc
/root/neteagle/xiaodong
/root/test/neteagle
[root@centos7 ~]# ll -h /var/lib/mlocate/mlocate.db 
-rw-r-----. 1 root slocate 1.5K Oct 10 19:26 /var/lib/mlocate/mlocate.db	#时间变了。

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/125686578