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