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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章