文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux系统locate命令的使用方法是什么

2023-06-28 13:48

关注

小编今天带大家了解Linux系统locate命令的使用方法是什么,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux系统locate命令的使用方法是什么”的知识吧。

1.1 简述

locate命令用于查找文件或目录。locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次。因此,我们在用whereis 和 locate查找文件时,有时会找到已经被删除的数据;或者刚刚建立的文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。整个locate工作其实是由4部分组成的:

locate会读取由updatedb准备好的一个或多个数据库,然后将满足匹配PATTERN的文件写到标准输出,每行一个文件名。假如并未指定--regex选项,则PATTERN可以包含通配符。假如PATTERN中并未包含任何通配符,则locate命令以*PATTERN*模式进行查找。

默认情况下,locate命令并不会检查数据库中的文件是否仍然存在,也不会报告在上一次更新数据库之后产生的文件。

1.2 用法

 locate [OPTION]... [PATTERN]...

1.3 选项

 -A, --all               打印所有匹配PATTERNs的文件 -b, --basename          只名称与PATTERNs匹配的文件(例如/test/test.txt,则basename为test.txt) -c, --count             只打印匹配到的文件数目,而不是文件名本身 -d, --database DBPATH   用DBPATH来代替默认的数据库。DBPATH是一个以:(冒号)分割的数据库名称列表 -e, --existing          只打印在调用locate时存在的文件 -L, --follow            当和-e选项一起使用时,如果该文件是一个软链接文件,则会获取到该软链接对应的实际文件(此为locate命令默认行文)。 -h, --help              打印帮助文档信息 -i, --ignore-case       当进行文件模式匹配时,忽略大小写 -l, --limit, -n LIMIT   当成功匹配到LIMIT数量的文件时,退出 -P, --nofollow, -H      当和-e选项一起使用时,如果该文件是一个软链接文件,此时不跟随链接的实际文件 -0, --null              输出时以ASCII NUL作为分隔符 -S, --statistics        获得每一个搜索数据库的统计信息 -q, --quiet             当在读取和处理数据库时,遇到错误也不打印相关信息 -r, --regexp REGEXP     查找一个基本的模式匹配REGEXP。此选项情况下,不能出现PATTERNs -V, --version           打印locate的版本信息和license信息 -w, --wholename         匹配完整路径名(默认)

例如查找一个文件名称为NAME(并不是*NAME*)的文件,可以使用如下:

 # locate -b '\NAME'

应为\本身是一个通配字符,因此这里会禁止隐式的转化为*NAME*.

1.4 使用范例

1) 搜索目录下所有以sh开头的文件

 # locate /etc/sh /etc/shadow /etc/shadow- /etc/shells

2) 包含某个字符串的相关文件

 # locate passwd /etc/passwd /etc/passwd- /etc/pam.d/passwd /etc/security/opasswd /usr/bin/gpasswd /usr/bin/grub2-mkpasswd-pbkdf2 /usr/bin/kpasswd /usr/bin/lppasswd /usr/bin/passwd /usr/bin/smbpasswd ....

3) 限定显示数量

如果显示的内容过多,可以使用-n选项来限定显示数量。

 # locate -n 5 passwd /etc/passwd /etc/passwd- /etc/pam.d/passwd /etc/security/opasswd /usr/bin/gpasswd

4) 使用正则表达式

当需要查找符合特定规则的信息时,可以使用-r选项匹配相应的正则表达式

 //查找以 /var/lib/rpm 开头的文件 # locate -r ^/var/lib/rpm /var/lib/rpm /var/lib/rpm-state /var/lib/rpm/.dbenv.lock /var/lib/rpm/.rpm.lock ....   //查找以 zip 结尾的文件 # locate -r zip$ /usr/bin/funzip /usr/bin/gpg-zip /usr/bin/gunzip /usr/bin/gzip /usr/bin/mzip /usr/bin/unzip /usr/bin/zip /usr/lib64/libreoffice/share/config/images.zip /usr/lib64/libreoffice/share/config/images_crystal.zip ....

5) 判断某一目录下的文件是否存在(软链接)

 # ls ../lib | while read line; do if [ -f ../lib/$line ]; then  temp="$(locate "$line")"; if [ -n "$temp" ]; then  echo $line; fi fi done

1.5 updatedb的配置文件/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" PRUNENAMES = ".git .hg .svn" PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"

感谢大家的阅读,以上就是“Linux系统locate命令的使用方法是什么”的全部内容了,学会的朋友赶紧操作起来吧。相信编程网小编一定会给大家带来更优质的文章。谢谢大家对编程网网站的支持!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯