rg - 현재 가장 빠 른 텍스트 검색 신기
이전에 텍스트 검색 도 구 를 간단하게 사용 한 적 이 있 습 니 다. ag - the Silver Searcher 는 나중에 ag 가 Windows 에서 검색 한 결과 중국어 로 어 지 러 운 코드 를 표시 하 는 것 을 발 견 했 습 니 다. 공식 적 으로 는 아직 해결 되 지 않 았 습 니 다.
그리고 최근 몇 년 동안 더욱 우수한 텍스트 검색 신기 가 나 타 났 습 니 다. ripgrep, 조금 만 시도 해 보 았 습 니 다. 속도 가 빠 르 고 플랫폼 을 뛰 어 넘 으 며 중국 어 를 지원 하여 본인 의 수요 에 부합 합 니 다.
다음은 rg 와 그 가 가장 자주 사용 하 는 옵션 을 간단하게 소개 합 니 다.
간단 한 소개
정규 일치 재 귀적 검색 디 렉 터 리
주어진 정규 표현 식 에 따라 rg 는 행위 단 위 를 대상 으로 재 귀적 으로 검색 합 니 다.기본적으로 rg 는
.gitignore
설정 을 존중 하고 숨겨 진 파일 / 디 렉 터 리 와 바 이 너 리 파일 을 자동 으로 무시 합 니 다.rg 는 다음 과 같은 몇 가지 특성 을 가지 고 있다.
grep -R
) .gitignore
이 지정 한 파일 을 자동 으로 무시 하고 파일 과 바 이 너 리 파일 을 숨 깁 니 다 grep
대부분의 상용 특성 사용법
USAGE:
rg [OPTIONS] PATTERN [PATH ...]
rg [OPTIONS] [-e PATTERN ...] [-f PATTERNFILE ...] [PATH ...]
rg [OPTIONS] --files [PATH ...]
rg [OPTIONS] --type-list
command | rg [OPTIONS] PATTERN
예 를 들 어:
rg RxJava // RxJava
rg install ReadMe.md // ReadMe.md install
상용 옵션 안내
-g, --glob
Include or exclude files and directories for searching that match the given glob. This always overrides any other ignore logic. Multiple glob flags may be used. Globbing rules match .gitignore globs. Precede a glob with a ! to exclude it. 일부 유형의 파일 이나 디 렉 터 리 를 추가 하거나 제거 하 는 것 과 일치 합 니 다.glob
에 !
을 더 해 검색 을 배제 하 겠 다 고 밝 혔 다.eg: 현재 디 렉 터 리 에서
require('uglifyjs-webpack-plugin')
검색:rg -F "require('uglifyjs-webpack-plugin')" -g "*.md" // `.md`
rg -F "require('uglifyjs-webpack-plugin')" -g "!*.md" // `.md`
--iglob
: -g, --glob
과 같 지만 대소 문 자 는 무시 합 니 다.-l, --files-with-matches
Only print the paths with at least one match. 일치 하 는 내용 의 파일 이름 만 인쇄 합 니 다.-v, --invert-match
Invert matching. Show lines that do not match the given patterns. 역방향 일치.-C/--context [Lines]
Show the lines surrounding a match. 출력 일치 내용 전후 [LINES] 줄 내용eg:
require('uglifyjs-webpack-plugin')
을 검색 하여 이 줄 의 앞 뒤 각 2 줄 의 내용 을 출력 합 니 다.rg -C 2 "require\('uglifyjs-webpack-plugin'\)" //
-F, --fixed-strings
Treat the pattern as a literal string instead of a regular expression. When this flag is used, special regular expression meta characters such as .(){}*+
do not need to be escaped. 정규 표현 식 이 아 닌 문자열 로 일치 하 는 문 자 를 사용 합 니 다.즉, 일치 문자 .(){}*+
은 전의 할 필요 가 없다.eg:
require('uglifyjs-webpack-plugin')
을 검색 하여 이 줄 의 앞 뒤 각 2 줄 의 내용 을 출력 합 니 다.rg -C 2 -F "require('uglifyjs-webpack-plugin')" ./ //
--max-depth
Limit the depth of directory traversal to NUM levels beyond the paths given. A value of zero only searches the explicitly given paths themselves. For example, 'rg -- max - depth 0 dir /' is a no - op because dir / will not be descended into. 'rg -- max - depth 1 dir /' will search only the direct children of 'dir'. 폴 더 재 귀적 검색 깊이 를 제한 합 니 다.
rg --max-depth 0 dir/
은 어떠한 검색 도 수행 하지 않 습 니 다.rg --max-depth 1 dir/
마 리 는 dir/
현재 디 렉 터 리 에서 검색 합 니 다.-M/--max-columns
Limit the length of lines printed by ripgrep. 출력 최대 줄 수 를 제한 합 니 다.--files
Print the files that ripgrep would search, but don 't actually search them. 인쇄 할 때 찾 을 파일 입 니 다. 이 옵션 은 실제 조회 작업 을 수행 하지 않 습 니 다.형식: rg [OPTIONS] --files [PATH ...]
, 여기에 pattern
을 추가 할 수 없습니다.eg: 현재 파일 을 인쇄 하면 찾 을 파일:
rg --files . //
주: 이 옵션 은 사실
find . -type f
에 해당 합 니 다. 현재 디 렉 터 리 의 모든 파일 을 찾 습 니 다.-c/--count
일치 하 는 총 라인 수 를 보고 합 니 다. 일치 하 는 파일 수 를 계산 합 니 다.--debug
Shows ripgrep 's debug output. This is useful for understanding why a particular file might be ignored from search, or what kinds of configuration ripgrep is loading from the environment. 디 버 깅 정 보 를 표시 합 니 다.구체 적 인 파일 이 무시 되 는 원인 이나 rg 가 환경 변수 에서 어떤 설정 을 불 러 왔 는 지 알 아 보 는 데 유리 합 니 다.-e, --regexp
A pattern to search for. This option can be provided multiple times, where all patterns given are searched. Lines matching at least one of the provided patterns are printed. This flag can also be used when searching for patterns that start with a dash. For example, to search for the literal '-foo', you can use this flag:
rg -e -foo
You can also use the special '--' delimiter to indication that no more flags will be provided. Namely, the following is equivalent to the above:
rg -- -foo
정규 검색 을 사용 합 니 다.주: rg 자체 가 정규 표현 식 을 지원 합 니 다.
-e
은 접두사 테이프 -
과 일치 하 는 문자열 이나 여러 문자열 과 일치 하려 면 (이 옵션 을 여러 번 사용 하면 됩 니 다).eg: 검색 내용 은
startXXXend
문자열 을 포함 합 니 다:rg -e "start.*end" . // ,`startXXXend`,`XXXstartendXXX`,`XXXstartXXXend`,`XXXstartXXXendXXX`
rg "start.*end" . //
-i/--ignore-case
패턴 을 검색 할 때 케이스 차 이 를 무시 합 니 다. rg -i fast
은 fast
, fASt
, FAST
, -S/--smart-case
등 대소 문 자 를 무시 합 니 다.This is similar to
--ignore-case
, but disables itself if the pattern contains any uppercase letters. 보통 this flag is put into alias or a config file. 스마트 대소 문 자 를 열 면 보통 --ignore-case
에 해당 하지만 대문자 입력 시 대소 문자 무시 기능 을 취소 합 니 다.-w/--word-regexp
Require that all matches of the pattern be surrounded by word boundaries. That is, given pattern
, the --word-regexp
flag will cause ripgrep to behave as if pattern
were actually \b(?:pattern)\b
. 단어 경 계 를 열 고 단어 만 맞 춥 니 다.-a/--text
binary files as if they were plain text. 바 이 너 리 파일 을 검색 하 십시오 (바 이 너 리 파일 을 텍스트 파일 로 보 여 줍 니 다)--hidden
Search hidden files and directories. By default, hidden files and directories are skipped. hidden file or a directory is whitelisted in an ignore file, then it will be searched even if this flag isn 't provided. 숨겨 진 파일 을 검색 합 니 다.기본적으로 숨겨 진 파일 을 검색 하지 않 습 니 다. 숨겨 진 파일 이 설정 화이트 리스트 에 있 으 면 검색 합 니 다. 이 옵션 을 표시 하지 않 아 도 됩 니 다.-r, --replace
Replace every match with the text given when printing results. Neither this flag nor any other ripgrep flag will modify your files. Capture group indices (e.g., $5) and names (e.g., $foo) are supported in the replacement string.
Note that the replacement by default replaces each match, and NOT the entire line. To replace the entire line, you should match the entire line.
This flag can be used with the - o / -- only - matching flag. 문자 교체.일치 하 는 문 자 를 사용자 정의 문자 로 바 꿉 니 다. 이 옵션 은 원본 파일 을 바 꾸 지 않 고 출력 만 바 꿉 니 다.
eg: 파일 형식 이
.py
인 파일 을 찾 고 경로 의 \
을 /
으로 변경 합 니 다.rg --files . | rg -F ".py"| rg -F \ -r /
기타
.gitignore
일치 규칙 을 자동 으로 걸 러 내 고 숨겨 진 파일 과 디 렉 터 리 를 무시 하 며 바 이 너 리 파일 과 링크 를 무시 합 니 다.그러나 이 모든 필 터 는 각자 지정 한 표 시 를 통 해 제거 할 수 있 습 니 다. 1) --no-ignore/-u
: .gitignore
의 일치 규칙 에 응답 하지 않 음 2) --hidden/-uu
: 숨겨 진 파일 과 디 렉 터 리 검색 3) -a/--text/-uuu
: 바 이 너 리 파일 검색 4) -L/--folow
: 링크 파일 추적 -g, --glob
): 수 동 필 터 는 .gitignore
· 과 같은 모드 로 분 석 됩 니 다. 즉, 뒤에 있 는 glob 는 앞의 glob 를 교체 합 니 다.예 를 들 어 rg clap -g "*.toml" -g "!*.toml"
은 rg clap -g "!*.toml"
, 즉 .toml
파일 을 검색 하지 않 는 것 과 같다.-g, --glob
): 상기 globs 모드 를 사용 하면 파일 형식의 필 터 를 실현 할 수 있 지만 매번 -g "*.xxx"
을 쓰 는 것 은 너무 번 거 롭 습 니 다. 이 를 위해 rg 는 파일 형식 을 직접 지원 하 는 다른 옵션 을 내 장 했 습 니 다: -t/--type
.예 를 들 면 rg "fn run" --type rust // :rust
rg "fn run" --trust // :rust,
rg "int main" -tc // :C, `.c` `.h` , :rg "int main" -g "*.{c,h}"
rg clap --type-not rust // rust
rg clap -Trust // rust ,
주: 즉
-t
은 파일 형식 을 포함 하고 -T
은 파일 형식 을 제외 합 니 다.파일 형식 은 rg --type-list
을 통 해 볼 수 있 습 니 다.레 퍼 런 스
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.