江苏通信建设交易中心网站,西宁网络推广公司,创建网页的方法,广西网络网站建设文章目录一、命令介绍二、相关文件说明配置文件 updatedb.conf三、更新数据库四、常用选项五、命令示例搜索文件名以指定字符串开头的文件查找名称中含有指定字符串的文件使用正则表达式查找特定条件的文件一、命令介绍
locate 命令用来查找文件或目录。 locate 命令要比 find…
文章目录一、命令介绍二、相关文件说明配置文件 updatedb.conf三、更新数据库四、常用选项五、命令示例搜索文件名以指定字符串开头的文件查找名称中含有指定字符串的文件使用正则表达式查找特定条件的文件一、命令介绍
locate 命令用来查找文件或目录。 locate 命令要比 find -name 快得多原因在于它不会深入到文件系统中去搜索具体目录而是搜索一个索引数据库 /var/lib/mlocate/mlocate.db 。这个数据库存放着系统中的所有文件信息。Linux 系统自动创建这个数据库并且每天自动更新一次因此我们在用 whereis 和 locate 查找文件时有时会找到已经被删除的数据或者刚刚建立文件却无法查找到原因就是因为数据库文件没有被更新。为了避免这种情况可以在使用 locate 之前先使用 updatedb 命令手动更新数据库。
locate 可以指定具体名称、通配符、正则表达式来查找符合范本样式的文件和目录。
二、相关文件说明
文件说明/usr/bin/updatedb主要用来更新数据库默认每天执行一次通过 crontab 自动完成的该程序会开启一个名为 crond 的守护进程/etc/crontabcrontab 的配置文件可以设置程序 updatedb 的执行周期等/etc/updatedb.confupdatedb 的配置文件/usr/bin/locate命令文件的位置/var/lib/mlocate/mlocate.db存放文件信息的数据库文件。版本不同文件名和位置会有所不同有的版本是 /var/lib/locatedb有的版本是 /var/lib/slocate/slocate.db
配置文件 updatedb.conf
[roothtlwk0001host ~]# cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS yes
PRUNEFS 9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs ceph fuse.ceph
PRUNENAMES .git .hg .svn .bzr .arch-ids {arch} CVS
PRUNEPATHS /afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/lib/dnf/yumdb /var/spool/cups /var/spool/squid /var/tmp /var/lib/ceph注
PRUNE_BIND_MOUNTS 设置是否限制搜索yes 表示限制搜索no 表示不限制搜索PRUNEFS 指定排除检索的文件系统类型即列出的文件系统类型不进行检索PRUNENAMES 指定排除检索的文件后缀名即哪些后缀的文件不进行检索PRUNEPATHS 指定排除检索的路径即列出的路径下的文件及子目录均不会进行检索所以 updatedb 之后使用 locate 仍然找不到明明存在的文件可以在这里检查下是不是被排除在外了
三、更新数据库
[roothtlwk0001host ~]# updatedb四、常用选项
选项说明-b 或 --basename仅匹配路径名的基本名称-c 或 --count只输出找到的条目数量-d 或 --database DBPATH使用 DBPATH 指定的数据库而不是默认数据库 /var/lib/mlocate/mlocate.db-e 或 --existing仅打印 locate 运行时存在的文件的条目仅打印当前现有文件的条目-L 或 --follow检查文件是否存在时会跟踪符号链接也就是说不把符号链接当成独立的文件进行检查而是去检查链接文件所指向的源文件-P 或 --nofollow 或 -HWhen checking whether files exist (if the --existing option is specified), do not follow trailing symbolic links. This causes broken symbolic links to be reported like other files. 检查文件存在时不跟踪符号链接也就是说将符号链接也当成独立文件进行检索这和选项 --follow 正好相反-w 或 --wholenamematch whole path name (default)-i 或 --ignore-case忽略大小写-l -n num 或 --limit -n num将输出或计数限制为 num 个条目-m 或 --mmapIgnored for compatibility with BSD and GNU locate.-s 或 --stdioIgnored for compatibility with BSD and GNU locate.-0 或 --null在输出中使用 NUL 分隔条目-S 或 --statistics将每个读取数据库的统计信息写入标准输出而不是搜索文件并成功退出-q 或 --quiet不输出有关读取和处理数据库时遇到的错误的消息。-r 或 --regexp REGEXP使用基本正则表达式--regex使用扩展正则表达式-V 或 --version显示版本信息-h 或 --help显示帮助
五、命令示例
搜索文件名以指定字符串开头的文件
搜索 /etc 目录下所有以 sh 开头的文件
[rootlinuxcool ~]# locate /etc/sh/etc/shadow/etc/shadow-/etc/shells查找名称中含有指定字符串的文件
查找名称中含有关键词 updatedb 的文件
[roothtlwk0001host ~]# locate updatedb
/etc/updatedb.conf
/usr/bin/updatedb
/usr/lib/systemd/system/mlocate-updatedb.service
/usr/lib/systemd/system/mlocate-updatedb.timer
/usr/libexec/mlocate-run-updatedb
/usr/share/man/man5/updatedb.conf.5.gz
/usr/share/man/man8/updatedb.8.gz
/usr/share/vim/vim80/ftplugin/updatedb.vim
/usr/share/vim/vim80/syntax/updatedb.vim注这不是执行更新命令后面的 updatedb 是搜索的关键词
使用正则表达式查找特定条件的文件
例如查找以 /var/lib/rpm 开头的文件
[rootlocalhost ~]# locate -r ^/var/lib/rpm查找 etc.conf 结尾的文件
[rootlocalhost ~]# locate -r etc.conf$