2013年12月5日 星期四

全文搜尋工具介紹: grep, git grep, sublimetext

全文搜尋工具介紹: grep, git grep, sublimetext

grep

grep 是多數人最常用的全文搜尋工具,每台 linux box 都有,但速度慢,而且要搭配 find 才好用

最常用的指令是

grep -Hnir foo bar

要搜尋 header and source files 則可以用

grep -Hnir --include \*.h --include \*.c foo bar

或者是透過 find

find . \(-name '*.h' -o -name '*.c' \) --exec grep -Hinr foo {} \; -print

The Silver Search (ag)

The Silver Searcher (ag) 很不錯,是我目前的主力,git grep 這工具是我第一次看到,但效能也很不錯,但限定在有放在 git repo 內的檔案

使用 ag or git grep 的優點是在搜尋時會自動套用 .gitignore 避開不必要的搜尋,加快搜尋速度

ag 要搜尋 header and source files,可以用 -G 的參數後加上 regexp pattern

ag -i -G '(.h|.cpp)$' 'foo' /bar/

或者是只要搜尋 Android.mk 檔案的內容

ag -G 'Android.mk' 'foo'

ag 要顯示 Context,也就是搜尋目標前後的文字,可以用 -C 2 的參數

ag -i -G '(.h|.cpp)$' -C 2 'foo' /bar/

ag 也有 Windows 版本,可由此下載 The Silver Searcher windows port

SublimeText

SublimeText 的 Find in Files 也很好用,能夠顯示 context (搜尋目標前後行),也能點擊檔名與關鍵字開啟檔案,很像 grep.vim ,不過是圖形介面

也可利用 SublimeText Package 的 Search In Project 呼叫 ag 進行全文搜尋