忽略規則自動生效、隱藏檔自動繞開:ripgrep 15.2 的預設值
摘要
以 Rust 撰寫的遞迴搜尋工具。15.2 版預設遵循三層忽略規則,自動跳過隱藏檔與無關目錄,同時支援按類型篩選、PCRE2 正規表示式與壓縮檔內容搜尋。
推薦- 軟體名稱
- ripgrep
- 版本
- 15.2
- 收費
- 免費
- 開源
- 開源
- 作業系統
- WindowsmacOSLinux
- 更新時間
- 2026-10-19 20:58
在 ripgrep 裡,遞迴搜尋是預設動作。在專案根目錄敲下 rg 和想找的模式,它會在整棵目錄樹裡比對,同時自動繞開被忽略的目錄、隱藏檔與二進位檔。2026 年 7 月發布的 15.2 是目前穩定的版本。
預設值先替你把範圍減掉
專案稍大一點,真正想搜的程式碼通常只佔目錄樹的一小部分。建置產物、相依套件快取、日誌、編輯器的暫存檔散在各處,逐層限定範圍既費神又容易漏。ripgrep 的命令名是 rg,它把過濾擺在最前面:預設讀取 .gitignore、.ignore 與 .rgignore 三份忽略規則,跳過隱藏目錄與被判定為二進位的檔案,只在可能是原始碼的範圍裡尋找。這套預設值不需要設定,裝好就能直接用。
需要看全部內容時也有出口。加上 -uuu 會一次關掉自動過濾,被忽略的、隱藏的、二進位的檔案全部回到搜尋範圍。預設克制、需要時放開,這個取捨貫穿了它的參數設計。

用類型把範圍再收窄一層
知道要搜的是哪一類檔案時,用 -t 只保留指定類型,用 -T 把某一類排除在外。查腳本、翻設定、找檔案,各用各的類型,結果裡不會混進無關的副檔名。內建類型之外還能自己定義規則,登記一次之後,自訂類型與內建類型一樣按 -t 呼叫。
正規表示式引擎可以換一套
預設使用 Rust 自帶的正規表示式引擎,語法覆蓋面足夠應付日常檢索,也不會踩到回溯失控那類坑。碰到必須用環視或者反向引用的寫法,加 -P 切到 PCRE2 引擎,這兩類構造就能用上。不想每次記參數,可以用 --auto-hybrid-regex 讓程式按模式需要自動切換,也可以用 --engine 在預設、PCRE2、自動三者之間明確指定。切換只影響正規表示式的語法能力,遞迴搜尋、跳過隱藏檔這些預設行為維持不變。
壓縮檔裡的內容也能直接搜
加上 -z 之後,gzip、bzip2、xz、lz4、lzma、zstandard、brotli 七種壓縮格式不必先解壓,裡面的文字會和一般檔案一樣被比對到。日誌歸檔、打包好的離線檔案這類材料,平時要解壓才查得動,現在一條命令就能翻。
要搜 PDF 這類二進位檔案,用 --pre 掛一個前置處理命令,由它把檔案轉成文字再交給 ripgrep。前置處理是你自己給的命令,轉換方式不受限制,掃描版檔案先做文字擷取也能接進來。
編碼與設定上的餘地
文字編碼預設按 UTF-8 處理,帶 BOM 的 UTF-16 檔案能自動辨識。遇到 latin-1、GBK、EUC-JP、Shift_JIS 這類編碼,用 -E 明確指定即可,不必先把檔案轉碼。老專案裡混著幾種編碼的檔案,這一項省掉的往往是來回折騰的時間。
設定檔是另一層省事的設計。把常用的預設參數寫進設定檔,之後每次呼叫都會帶上,不必在命令列重複輸入。對每天要敲很多次 rg 的人來說,這比背參數實在。
速度來自幾處具體的取捨
提速的手段都不玄。正規表示式引擎用有限自動機,配合 SIMD 指令與字面量最佳化;單一檔案走記憶體映射,大目錄改成帶中間緩衝的增量讀取,由程式自己挑更合適的那一種;忽略規則用 RegexSet 一次比對多條 glob,跳過無關目錄這一步本身開銷很小;目錄走訪採用無鎖平行。官方給出的基準裡,對《福爾摩斯全集》跑同一條查詢,耗時約一秒。
版本與授權
15.2.0 於 2026 年 7 月 15 日發布,改動集中在跨目錄搜尋時 gitignore 比對的缺陷,同時改善了超大倉庫的目錄走訪耗時。專案以 MIT 與 Unlicense 雙授權發布,程式碼公開在 GitHub 上,由 Andrew Gallant 也就是 BurntSushi 維護,Windows、macOS、Linux 三個平台都提供原生二進位檔。
ripgrep 的價值不在參數多,而在於預設值足夠對:忽略規則自動生效,隱藏檔與無關目錄被擋在外面,需要放開時一個 -uuu 就回到全量。把這類瑣碎判斷交給工具,搜尋這件事才回到它本來的樣子。