在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吧。