(019) Linux之文件搜索

十年运维系列之基础篇 - Linux

作者:曾林 

联系:[email protected]

网站:www.jplatformx.com

版权:文章未经同意请勿转载


一、引言

      Linux系统中含有非常多的文件!这就很自然地产生一个问题,那就是我们应该如何去查找文件。虽然我们知道Linux文件系统良好的组织架构,源自于类UNIX的操作系统代代传承的习俗,但是仅文件数量就会引起非常可怕的问题。

      本章我们主要介绍两个用在Linux系统中搜索文件的工具。

  • locate:通过文件名来查找文件
  • find:在文件系统目录框架中查找文件

      同时,我们还会介绍一个通常与文件搜索命令一起使用、处理搜素结果文件列表的命令。

  • xargs:从标准输入中建立、执行命令行

此外,还会介绍两个辅助工具。

  • touch:更改文件的日期时间
  • stat:显示文件或文件系统的状态

 

二、locate——较简单的方式查找文件

      locate命令通过快速搜索数据库,以寻找路径名与给定字符串相匹配的文件,同时输出所有匹配结果。例如,假定查找名称以zip字符串开头的程序,由于查找的是程序文件,所以可以认为包含所要查找的程序的目录名应以bin结尾。因此可以尝试下面的命令行:

      shell> locate bin/zip

      locate程序将搜索该路径名数据库,并输出文件名包含字符串bin/zip的所有文件。执行结果如下图所示:

技术分享

      有时搜索需求并不是那么简单和纯粹,这个时候就需要使用locate命令来结合grep工具来实现一些更有趣的搜索。如下图所示:

技术分享

      注:locate的搜索数据库从何而来?你也许曾注意到,有些Linux版本,系统刚刚安装好后locate命令并不能正常工作,但是如果第二天再尝试的话,就会发现它又能正确工作了,这到底是怎么回事呢?其实,是因为locate的搜索数据库由另一个叫做updatedb的程序来创建的,通常该程序作为一个cron任务定期执行。所谓cron任务就是指定期由cron守护进程执行的任务,多数装有locate命令的系统每天执行一次updatedb。由此可见,locate的搜索数据库并不是持续更新的,所以locate命令查找不到新的文件。解决方案就是切换到超级用户,然后手动执行一下updatedb程序。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。