linux中使用locate搜索文件方法记录

在linux中,有时用apt或者yum等软件包管理工具直接安装软件的时候,不知道软件到底安装到哪里去了,配置文件放哪里?这个时候就可以使用搜索命令locate来找到这些文件。海词上locate翻译为找出的意思,非常形象了。

1、命令格式

locate -bic 关键词(可以是正则表达式)

各参数表示含义如下:

  • -b:basename,只搜索文件名包含关键词的的文件
  • -c:count,统计搜索到的总数
  • -i:ignore case,忽略大小写
  • 关键词:就是搜索的关键词,使用正则表达式可以指定目录进行搜索,非常有用。

这边几个参数是笔者平时比较常用的,其它参数的使用可以通过man locate查看。另外正则表达式的使用会比较多,笔者常用来定位到某个目录下进行查找。

2、命令测试

使用locate命令之前,有一个要先处理下。查看man手册可以发现locate这个命令实际上是在一个数据文件内搜索的,在ubuntu 12.04下这个文件是/var/lib/mlocate/mlocate.db,先更新下这个数据文件,使用updatedb命令就OK了:

$ sudo updatedb

如果不更新,会出现明明有相关文件却找不到的问题,切记。

寻找文件路径中包含apache的文件

$ locate apache

.....省略若干结果......
/etc/apache2
/etc/apache2/apache2.conf
/etc/apache2/conf.d
/etc/apache2/envvars
/etc/apache2/httpd.conf
/etc/apache2/magic
.....省略若干结果......

从上面可以看到,只要文件路径中包含有字符”apache”的文件就会列出来,如果只需要列出文件名包含”apache”字符的文件,使用-b参数就可以了。

$ locate -b apache

.....省略若干结果......
/etc/apache2
/etc/apache2/apache2.conf
/etc/apparmor.d/abstractions/apache2-common
/etc/bash_completion.d/apache2.2-common
/etc/bash_completion.d/apache2ctl
.....省略若干结果......

搜索时忽略大小写

$ locate -i APACHE

统计搜索到的文件总数

$ locate -c apache

搜索指定目录中包含关键词的文件

$ locate -r ^/etc/*apache

上例运用到了正则表达式,是用来搜索/etc目录下包含apache的文件。通常情况下,如果不定位目录的话,搜索结果会非常多,定位目录能够更加精确的找到相应的文件。

总结

在linux中,也可以使用find来搜索文件,和locate不同的是find会实际扫描磁盘,所以效率上要比locate低些。不过find命令的搜索功能要比locate强大,如果locate搞不定,就用find吧。

原文地址:https://www.cnblogs.com/sthu/p/10130579.html