文章目录

  • 一、命令介绍
  • 二、相关文件说明
    • 配置文件 updatedb.conf
  • 三、更新数据库
  • 四、常用选项
  • 五、命令示例
    • 搜索文件名以指定字符串开头的文件
    • 查找名称中含有指定字符串的文件
    • 使用正则表达式查找特定条件的文件

一、命令介绍

locate 命令用来查找文件或目录。 locate 命令要比 find -name 快得多,原因在于它不会深入到文件系统中去搜索具体目录,而是搜索一个索引数据库 /var/lib/mlocate/mlocate.db 。这个数据库存放着系统中的所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用 whereislocate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。

locate 可以指定具体名称、通配符、正则表达式来查找符合范本样式的文件和目录。

二、相关文件说明

文件 说明
/usr/bin/updatedb 主要用来更新数据库,默认每天执行一次,通过 crontab 自动完成的,该程序会开启一个名为 crond 的守护进程
/etc/crontab crontab 的配置文件,可以设置程序 updatedb 的执行周期等
/etc/updatedb.conf updatedb 的配置文件
/usr/bin/locate 命令文件的位置
/var/lib/mlocate/mlocate.db 存放文件信息的数据库文件。版本不同,文件名和位置会有所不同,有的版本是 /var/lib/locatedb,有的版本是 /var/lib/slocate/slocate.db

配置文件 updatedb.conf

[root@htlwk0001host ~]# 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"

注:

  1. PRUNE_BIND_MOUNTS 设置是否限制搜索,yes 表示限制搜索,no 表示不限制搜索;
  2. PRUNEFS 指定排除检索的文件系统类型,即列出的文件系统类型不进行检索;
  3. PRUNENAMES 指定排除检索的文件后缀名,即哪些后缀的文件不进行检索;
  4. PRUNEPATHS 指定排除检索的路径,即列出的路径下的文件及子目录均不会进行检索,所以 updatedb 之后使用 locate 仍然找不到明明存在的文件,可以在这里检查下是不是被排除在外了

三、更新数据库

[root@htlwk0001host ~]# updatedb

四、常用选项

选项 说明
-b--basename 仅匹配路径名的基本名称
-c--count 只输出找到的条目数量
-d--database <DBPATH> 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e--existing 仅打印 locate 运行时存在的文件的条目,仅打印当前现有文件的条目
-L--follow 检查文件是否存在时,会跟踪符号链接,也就是说不把符号链接当成独立的文件进行检查,而是去检查链接文件所指向的源文件
-P--nofollow-H When 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--wholename match whole path name (default)
-i--ignore-case 忽略大小写
-l -n <num>--limit -n <num> 将输出(或计数)限制为 num 个条目
-m--mmap Ignored for compatibility with BSD and GNU locate.
-s--stdio Ignored for compatibility with BSD and GNU locate.
-0--null 在输出中使用 NUL 分隔条目
-S--statistics 将每个读取数据库的统计信息写入标准输出,而不是搜索文件并成功退出
-q--quiet 不输出有关读取和处理数据库时遇到的错误的消息。
-r--regexp <REGEXP> 使用基本正则表达式
--regex 使用扩展正则表达式
-V--version 显示版本信息
-h--help 显示帮助

五、命令示例

搜索文件名以指定字符串开头的文件

搜索 /etc 目录下所有以 sh 开头的文件:

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

查找名称中含有指定字符串的文件

查找名称中含有关键词 updatedb 的文件:

[root@htlwk0001host ~]# 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 开头的文件:

[root@localhost ~]# locate -r ^/var/lib/rpm

查找 etc.conf 结尾的文件:

[root@localhost ~]# locate -r etc.conf$

Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)相关推荐

  1. Linux 命令 find / -ctime +1 真的是查找1天前创建的文件咩?

    链接: http://blog.itpub.net/28602568/viewspace-1404761/ 标题: Linux 命令 find / -ctime +1 真的是查找1天前创建的文件咩? ...

  2. ffmpeg linux 命令,Linux命令行下转换媒体格式工具FFMPEG介绍

    Linux命令行下转换媒体格式工具FFMPEG介绍 格式:ffmpeg [[输入文件选项]- i 输入文件名] {[输入文件选项] 输出文件名} 主要选项: -L 显示ffmpeg的版权说明 -h 显 ...

  3. Linux命令行及各常用工具代理设置

    Linux命令行及各常用工具代理设置 命令行代理设置 1 通过命令行指定 直接为当前命令行设置代理 对当前终端的全部工具(apt.curl.wget.git 等全都有效) 以下仅以 http 代理为例 ...

  4. linux 命令行 翻译工具,linux 命令行下的翻译工具

    linux 命令行下的翻译工具 Luo Weifeng 2011-7-16 第一种:著名的StarDict的命令行版sdcv 安装主程序: #apt-get install sdcv 安装词库: 21 ...

  5. win7系统计算机文件夹缓慢,win7系统搜索文件很慢的两种解决方法

    win7专业版系统内置的搜索文件功能还是比较实用的,在茫茫文件中帮用户快速找到所需要的文件.但伴随电脑中文件越来越多,Win7系统搜索文件速度变慢很多,有什么办法能够解决的?想要Win7搜索文件功能更 ...

  6. win10 计算机 搜索文件夹,win10如何搜索文件或文件夹_win10怎么全盘搜索文件-win7之家...

    由于win10系统中自带有大量的文件,同时用户在使用的过程中也会创建一些,这些文件的存在往往容易造成用户寻找起来很是麻烦,同时许多用户也都不知道怎么全盘进行搜索文件,那么win10如何搜索文件或文件夹 ...

  7. linux通过字符串查看,linux命令strings有什么用?查找二进制文件可打印字符串。...

    在对象文件或二进制文件中查找可打印的字符串 补充说明 strings命令在对象文件或二进制文件中查找可打印的字符串.字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束. strings命令对 ...

  8. Linux 命令之 lsof -- 列出当前系统已打开的文件列表

    文章目录 命令介绍 常用选项 字段说明 文件类型 文件描述符 文件状态模式 锁模式 参考示例 (一)查看打开指定文件的所有进程 (二)列出由某个 PID 对应的进程打开的所有文件 (三)查看指定名称的 ...

  9. linux将屏幕输出到文件,Linux命令执行的屏幕输出内容重定向到日志文件

    摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 快速mark一下这个命令细节,免得以后使用又忘记了 大家都知道可以用echo来输出内容到 ...

最新文章

  1. 那些让我唏嘘不已的嫡亲同学
  2. git pull问题“error: Your local changes to the following files would be overwritten by merge”解决方案
  3. OMAP-L138核心板
  4. handsome对应php文件,handsome主题魔改教程
  5. VTK:vtkBillboardTextActor3D用法实战
  6. jMeter HTTP Request Defaults 的学习笔记
  7. Connect 大会的主题 ---微软大法好
  8. 多线程快速入门 123
  9. 大数据_Flink_数据处理_案例WorldCount_批处理版---Flink工作笔记0008
  10. veeam备份linux,VeeamBackup Replication 创建备份任务
  11. 无法听到计算机发出的声音怎么办,为什么视频对方听不到我说话_电脑视频对方听不到声音的解决方法...
  12. 新浪微博平台的多级架构
  13. 苹果手机!!!fiddler自动抓抓包iphone上的http(或https)请求,手机设置完http代理,但是手机不能上网了。即(fiddler iphone http代理 不能上网)
  14. JQuery 属性操作 - attr() 方法
  15. Windows 10配置远程开机
  16. 三国演义人物词频统计 -- Python
  17. 漫话最短路径(二)--bellman-Ford(贝尔曼-福特)算法
  18. Trucksim(一):Trucksim动力学模型搭建
  19. 【vue】手动实现vue的v-model语法糖,以及控制在输入法完成之后才更新model
  20. 客户成功案例 | 从半导体到终端产品:恩智浦(NXP),利用数据驱动“移动”未来

热门文章

  1. 静态变量读取属性文件_一种通过变量插值读取属性的方法
  2. 带有AngularJS资源的Spring Rest Controller
  3. 定制基元和DTO的(反)序列化和验证
  4. Java开发趋势:2019年展望
  5. GitHub上的OpenJDK
  6. 用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件
  7. spring配置xml文件_XML配置文件中的Spring配置文件
  8. jpa 查询 列表_终极JPA查询和技巧列表–第2部分
  9. 在Kotlin中使用libGDX
  10. 带有JBoss工具的OpenShift 3上的Java EE 7应用程序