명령어/Linux

[리눅스] ripgrep(rg) grep보다 빠른 코드 검색

jykim23 2026. 7. 16. 17:48
반응형

부제: .gitignore를 존중하며 디렉터리를 통째로 훑는 초고속 grep

rg TODO src            # src 아래에서 TODO 문자열 재귀 검색
rg -n --type py "def " # 파이썬 파일만 골라 줄번호와 함께
rg -c POST logs/       # 매칭 개수만 파일별로 집계
$ rg --version
ripgrep 14.1.1

features:+pcre2
PCRE2 10.43 is available (JIT is available)

$ rg TODO src
src/utils/helpers.py:# TODO: handle negative numbers
src/app.py:    # TODO: add retry logic

$ rg -n --type py "def " src
src/utils/helpers.py:1:def format_bytes(n):
src/app.py:3:def connect_db(host, port):
src/app.py:7:def main():

ripgrep은 디렉터리를 재귀로 훑으며 정규식을 검색하는 도구다. 별도 경로를 주지 않아도 현재 폴더 전체를 뒤지고, .gitignore에 걸린 파일과 바이너리를 자동으로 건너뛴다. grep -rn을 매번 손으로 조합하던 수고가 사라지고, 병렬 처리와 Rust 정규식 엔진 덕에 속도도 크게 앞선다. --type py처럼 언어 단위로 대상을 좁히는 기능도 grep에는 없다. 데비안은 apt install ripgrep, RHEL 계열은 EPEL을 켜고 dnf install ripgrep으로 설치한다.

이렇게도 쓴다

대소문자를 무시하고 검색한다.

rg -i error logs/

 

매칭된 파일 이름만 나열한다.

rg -l TODO

 

매칭 줄의 앞뒤 문맥을 함께 본다.

rg -A2 -B1 login logs/access.log

 

TODO가 든 파이썬 파일만 골라 줄 수를 센다. (rg + xargs 조합)

rg -l --type py TODO | xargs wc -l

 

PCRE2 정규식으로 뒤돌아보기 같은 고급 패턴을 쓴다.

rg -P '(?<=port=)\d+' config.json

 

매칭된 부분 문자열만 뽑아낸다.

rg -o 'HTTP/\d\.\d' access.log
반응형