技術文章 · IT 指令工具箱

grep 與 rg 搜尋文字:遞迴、正規表示式與排除目錄

整理 grep、ripgrep(rg)搜尋檔案內容的常用指令,包含忽略大小寫、顯示行號、前後文、固定字串、遞迴與排除大型目錄。

作者 Steve Chen · 發布  · 約 4 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

grep 幾乎每台 Unix 都有,rg 對程式碼目錄通常更快,也會尊重 .gitignore。搜尋前先決定要找固定字串還是正規表示式,能少掉很多跳脫問題。

18 組範例LinuxmacOSWindows rg查核日期:2026-08-11
動手前:不要直接掃含密碼、金鑰或個資的整顆磁碟後把輸出貼到公開工單。大型目錄先限制路徑、檔案類型與排除項目。

grep 基本搜尋

搜尋單一檔案Linux/macOS

grep 'error' app.log

預設區分大小寫。

忽略大小寫Linux/macOS

grep -i 'error' app.log

會同時命中 Error、ERROR 等。

顯示行號Linux/macOS

grep -n 'listen' nginx.conf

方便回到編輯器定位。

反向篩選Linux/macOS

grep -v 'healthcheck' access.log

顯示不符合條件的行。

固定字串搜尋Linux/macOS

grep -F 'a.b[c]' file.txt

-F 不把 . [ ] 當正規表示式。

只顯示符合的片段Linux/macOS

grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log

只做文字形狀比對,未驗證 IP 每段是否小於 256。

顯示前後 3 行Linux/macOS

grep -n -C 3 'Exception' app.log

-A 與 -B 可分別只看後文或前文。

計算符合行數Linux/macOS

grep -c 'ERROR' app.log

計算符合的行,不是總命中次數。

只列出命中的檔名Linux/macOS

grep -Rl 'deprecated_setting' config/

適合先找受影響檔案。

搜尋多個條件Linux/macOS

grep -E 'ERROR|WARN' app.log

使用擴充正規表示式。

ripgrep/rg

遞迴搜尋目前專案rg

rg 'database_url' .

預設尊重 .gitignore 並略過隱藏與二進位檔。

忽略大小寫rg

rg -i 'timeout' logs/

適合錯誤訊息大小寫不一致時。

只搜特定副檔名rg

rg 'TODO' -g '*.py' src/

-g 用 glob 限制檔案。

排除 vendor 與 min.jsrg

rg 'old-api' . -g '!vendor/**' -g '!*.min.js'

排除規則前面加 !。

包含隱藏檔rg

rg --hidden 'token_name' . -g '!.git/**'

可能碰到 .env;輸出分享前先遮蔽值。

列出會被搜尋的檔案rg

rg --files -g '*.conf'

只列清單,不搜尋內容。

顯示兩行前後文rg

rg -C 2 'connection refused' logs/

適合保留錯誤上下文。

只輸出命中檔名rg

rg -l 'feature_flag' config/

後續批次修改前先審核這份清單。

怎麼確認有做對

  • 用固定字串與正規表示式各抽查幾筆,確認沒有誤判。
  • 搜尋結果帶行號時回到原檔查看上下文。
  • 大型結果先用 -l 或 --count 摘要,不要直接貼完整內容。

常見錯誤

  • 把使用者輸入直接當正規表示式。
  • 搜尋範圍太大,把 build、vendor、備份與二進位檔一起掃。
  • 以為 rg 預設會搜尋隱藏檔與被 ignore 的檔案。
  • 把含密碼或 token 的命中行貼到外部。

版本與官方文件

參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。

聯絡廷皓討論 看更多文章