ripgrep, rg
작성일:
하위 디렉토리에서 정규식 패턴을 재귀적으로 검색하는 라인 지향 검색 도구
ripgrep
- https://github.com/BurntSushi/ripgrep
- rust로 만들어진 크로스플랫폼 지향
grep
대체도구
특징
- 코드 검색에 특화되고 기본적으로 재귀적 디렉토리 검색 사용
- 자동 필터링 : 기본적으로 디렉토리를 검색할 때 아래 조건은 검색하지 않음
.gitignore
.ignore
.rgignore
명시되어 있는 파일은 기본적으로 검색하지 않음 →--no-ignore
로 회피- 숨겨진 파일 및 디렉토리 →
--hidden
로 회피 - 바이너리 파일 (ripgrep은 NUL바이트 있으면 바이너리로 간주) →
--text
,-a
로 회피 - 심볼릭 링크 연결 →
--follow
,-L
로 연결
전체 필터링을 회피하기 (단계별) →
-u
or-uu
or-uuu
(quivalent to ‘grep -r’) - 수동 필터링 : glob
-g '*.toml'
- UTF-8 이외의 텍스트 인코딩으로 파일 검색 지원
- 비슷한 타입의 파일을 묶음 검색 지원
--type-list
- Visual Studio Code 에 탑재 됨 : https://code.visualstudio.com/updates/v1_11#_text-search-improvements
- 비슷한 다른 도구에 비해 가장 빠른 성능을 보임
비슷한 도구
- ag (the_silver_searcher) : https://github.com/ggreer/the_silver_searcher
설치
- Releases 에서 다운받거나 Package 설치
# masos
$ brew install ripgrep
# ubuntu
$ apt install ripgrep
# chocolatey
$ choco install ripgrep
기본 사용
# 현재 하위 디렉토리에서 `bash` 란 단어를 찾음
$ rg bash
# /etc 디렉토리에서 `bash` 란 단어를 찾음
$ rg bash /etc
# 파일/디렉토리 매치 검색
# -g, --glob <GLOB>: Include or exclude files and directories for searching that match the given glob
$ rg bash -g '*.sh'
# -u, --unrestricted Reduce the level of "smart" searchin
# 스마트 검색 수준을 낮춤
$ rg cmake -u
# rg -uuu' is roughly equivalent to 'grep -r'.
# 전체 파일 검색
$ rg cmake -uuu
타입 리스트 사용
# type-list 종류 확인
$ rg --type-list
...
cpp: *.[ChH], *.[ChH].in, *.[ch]pp, *.[ch]pp.in, *.[ch]xx, *.[ch]xx.in, *.cc, *.cc.in, *.hh, *.hh.in, *.inl
creole: *.creole
crystal: *.cr, Projectfile
cs: *.cs
csharp: *.cs
cshtml: *.cshtml
css: *.css, *.scss
csv: *.csv
cython: *.pxd, *.pxi, *.pyx
d: *.d
dart: *.dart
...
msbuild: *.csproj, *.fsproj, *.proj, *.props, *.targets, *.vcxproj
...
perl: *.PL, *.perl, *.pl, *.plh, *.plx, *.pm, *.t
php: *.php, *.php3, *.php4, *.php5, *.phtml
...
yaml: *.yaml, *.yml
...
# yaml type 파일에서 검색
# -t, --type <TYPE>...
$ rg host -t yaml
# yaml type 파일 제외하고 검색
# -T, --type-not <TYPE>...
$ rg host -T yaml
댓글남기기