Last Updated on 2024-09-24 by Clay
Ripgrep (rg
) 是一個用來快速搜尋文件內容的命令列工具,其設計目的為取代 grep
,並解決 grep
在大量級的文件檢索效率。
Ripgrep 採用 Rust 語言撰寫,同時支援高效的正規表示法(Regular Expression)引擎和 I/O 操作,這也是其搜索迅速的原因之一。
而除了原生支援 Regular Expression 外,它也默認自動識別 .gitignore 等需要忽略的規則文件、隱藏檔案與二進制文件。
安裝方法
Linux
可以通過 apt
或 yum
安裝:
sudo apt install ripgrep # Ubuntu/Debian
sudo apt install ripgrep # CentOS/Fedora
macOS
使用 Homebrew 安裝:
brew install ripgrep
Windows
可以從官方發佈頁面下載 Windows 可執行文件,或者使用 Scoop 安裝:
scoop install ripgrep
基本使用方法
基本的搜尋方法與 grep
相同。
rg 'keyword'
也可以指定搜尋特定的文件類別:
rg -t py 'TODO'
甚至是排除特定的文件或目錄(排除 logs/
底下):
rg 'error' -g '!logs/*'
也支援同時搜尋多個關鍵字:
rg 'test|try'
常用參數為:
-i
:忽略大小寫(case-insensitive)搜尋。-v
:反向搜尋,顯示不包含關鍵字的行。-l
:僅顯示包含匹配結果的文件名。-n
:顯示行號(默認行為)。--count
:僅顯示匹配行的總數。--max-depth
:設置搜尋深度,控制子目錄的搜尋層級。
進階一點的使用方法有可以搭配 less
:
rg -t py 'from|import' | less
以及指定特別的行號進行搜尋。可以使用 -A
(after context)或 -B
(before context):
rg 'keyword' -A 3 -B 2
這會顯示匹配結果前 2 行及後 3 行的內容。
References
- ripgrep recursively searches directories for a regex pattern ...
- What makes ripgrep so fast ? : r/rust