locate:用于查找符合条件的文件或目录

本文介绍linux的locate命令功能说明、语法、选项与参数、使用详解,并演示如何使用locate命令在linux上查找文件或目录

locate:用于查找符合条件的文件或目录

find命令虽然展现了强大是搜索能力,但对于大规模搜索而言,速度慢了些,下面介绍一下更快速定位文件的命令locate

locate命令用于用于查找符合条件的文件,它会去保存文件与目录名称的数据库内,查找合乎范本样例条件的文件或目录

这个数据库位于(/var/lib/mlocate/mlocate.db)文件,这个数据库每天由cron程序来建立。当创建好这个数据库后,就可以方便地搜索所需文件,他比find命令的搜索速度要快。

初次使用会报错,因为数据库文件此时尚未建立可以使用命令updatedb命令立刻生成该数据库文件的最新版本。运行这个命令需要root权限

在用 whereis 和 locate 查找文件时,有时会找到已被删除的数据,或者刚刚建立文件却无法查找到,原因就是因为数据库文件没有被更新

##安装
如果Linux没有这个命令请使用yum工具安装mlocate

yum install mlocate

##语法
功能说明:用于查找符合条件的文件或目录
语法:

locate [选项] [名称]

选项与参数:
-A, --all 只显示匹配所有模式的条目
-b, --basename 只匹配路径名的基本名称
-c, --count 只显示找到的条目的数目
-d, --database DBPATH 使用 DBPATH,而非默认数据(即:/var/lib/mlocate/mlocate.db)
-e, --existing 只显示当前存在的文件条目
-L, --follow 当文件存在时跟随蔓延的符号链接(默认)
-h, --help 显示帮助信息
-i, --ignore-case 匹配模式时忽略大小写区别
-l, --limit, -n LIMIT 限制为 LIMIT项目的输出(或 计数)
-m, --mmap 被忽略,用于向后兼容
-P, --nofollow, -H 当检查文件时不跟随蔓延的符号链接
-0, --null 输出时以 NUL 分隔项目
-S, --statistics 不搜索项目,显示有关每个已用数据库的统计信息
-q, --quiet 不报告关于读取数据库的错误消息
-r, --regexp REGEXP 搜索基本正则表达式 REGEXP 而不是模式
--regex 模式是扩展正则表达式
-s, --stdio 被忽略,用于向后兼容
-V, --version 显示版本信息
-w, --wholename 匹配完整路径名(默认)

##实例

立即更新数据

[root@localhost /]# updatedb

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

[root@localhost /]# locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells

###查找包含text字符串的相关文件

[root@localhost /]# locate text

###显示找到几个包含text字符串的相关文件

[root@localhost /]# locate -c text
351

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

[root@localhost /]# locate -n 5 text
/boot/grub2/i386-pc/gettext.mod
/boot/grub2/i386-pc/mda_text.mod
/boot/grub2/i386-pc/vga_text.mod
/etc/selinux/targeted/contexts
/etc/selinux/targeted/active/file_contexts

查找时不区分大小写

[root@localhost /]# locate -i text

使用正则表达式

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

# 查找以 /var/lib/rpm 开头的文件
[root@localhost /]# locate -r ^/var/lib/rpm

# 查找以 zip 结尾的文件
[root@localhost /]# locate -r zip$

###查找最近变动过的文件
使用 locate 命令查不到最近变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。

# 新建文件
[root@localhost ~]# touch new_file
[root@localhost ~]# locate ~/new_file
[root@localhost ~]# updatedb
[root@localhost ~]# locate ~/new_file
/root/new_file
[root@localhost ~]# 
# 删除文件
[root@localhost ~]# rm -rf file.txt 
[root@localhost ~]# locate ~/file.txt
/root/file.txt
[root@localhost ~]# updatedb
[root@localhost ~]# locate ~/file.txt
[root@localhost ~]# 

你可能感兴趣的:(Linux教程,运维,linux,linux教程,centos,centos教程)