1.软文推荐

2.软文推荐

3.软文推荐

locate命令也是用于Linux系统中查找文件或者目录的,其功能比find命令更加强大而且速度更快,下面良许教程网为大家分享一下Linux系统locate命令的详细使用方法。

1.1 简述

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

/usr/bin/updatedb: 主要用来更新数据库,通过crontab自动完成的

/usr/bin/locate: 查询文件位置

/etc/updatedb.conf: updatedb的配置文件

/var/lib/mlocate/mlocate.db: 存放文件信息的文件

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"

PRUNE_BIND_MOUNTS: 表示是否进行限制搜索

PRUNEFS: 表示排除检索的文件系统类型

PRUNENAME: 表示排除检索的文件类型

PRUNEPATHS: 表示排除检索的文件目录

至此关于Linux系统locate命令的使用方法分享结束,欢迎大家在评论区留言。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

本文来源:www.lxlinux.net/1308.html,若引用不当,请联系修改。

相关文章 8

1

国外哪家云服务器好(国外云服务器哪家比较好呢) 2分钟前

国外哪家云服务器好?如果要用国外服务器的话,可以用美国服务器,这是国内站长普遍爱用的服务器。虽然比不上国内服务器稳定,但美...

2

HostXen:日本大阪云主机,充值送20元代金券,2核2G内存/35G硬盘/3M带宽,50元/月起 5分钟前

hostxen日本云主机基于Xen架构云主机,支持内存、CPU、宽带和硬盘自由DIY。所有主机默认包含35G硬盘。有需要的可以围观一下。HostXen是一家国...

3

详解redis内部运作机制 8分钟前

redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,本...

4

Linux下删除组具体方法 10分钟前

Linux中如何删除组?linux通过将具有相同特性的用户划归为一个组,可以大大简化用户的管理,方便用户之间文件的共享,下面为大家详细讲...

5

Linux系统如何清屏 12分钟前

在Windows的cmd中清屏命令是cls,那么在Linux系统清屏的命令是什么?本篇文章为大家分享一下Linux系统清屏的四个命令,有需要的小伙伴可以参...

6

腾讯云11.11弹性容器服务 无服务器全托管Kubernetes服务 15分钟前

腾讯云11.11弹性容器服务怎么样? 腾讯云弹性容器服务(Elastic kubernetes Service,EKS)是腾讯云容器服务推出的无须用户购买服务器即可部署工作...

7

Linux下模拟系统负载 17分钟前

系统管理员通常需要探索在不同负载对应用性能的影响。这意味着必须要重复地人为创造负载。要想模拟系统负载可以通过专门的工具来实...

8

Linux系统下两种不同的方式安装htop 18分钟前

htop 是Linux系统中的一个互动的进程查看器,与Linux传统的top比较的话, htop 更 人性化 并且还 支持鼠标 操作!下面良许教程网通过yum方式和源码...