저는 이것을 공유하고 싶었고 이와 같은 도구가 더 많이 제공되기를 바랍니다.
텍스트 파일 디렉터리가 있습니다. 2개의 (부분) 단어가 포함된 파일을 검색해야 합니다. 키워드는 무작위 순서이지만 같은 줄에 있습니다.
지금까지 나는 이것을 사용할 수 있습니다 :
$ rg -i '\w*keyword1\w*.*\w*keyword2\w*|\w*keyword2\w*.*\w*keyword1\w*' --glob '*.txt' --line-number -l /path/to/search
$ rg -g '*.txt' -l -i 'keyword1.*keyword2|keyword2.*keyword1' /path/to/search
이 두 가지 모두 동일한 작업을 수행할 수 있습니다.
같은 일을 할 수 있는 사람이 또 있나요? 공유해주세요. 올바른 파일을 찾으려면 이것이 자주 필요하다는 것을 알았습니다.
그런데 파일 이름이 순서가 맞지 않는 키워드 2개인 파일을 검색하는 방법을 모르겠습니다. 순서가 맞지 않는 키워드 2개를 사용하여 파일 이름을 검색하는 방법은 무엇입니까? 예: 이상한 파일 이름_key1Nkey3Nkey2etc.txt 거대한 데이터베이스에서 이름을 검색하면 "key2"와 "key3"으로 구성된 파일만 기억되지만 순서는 확실하지 않습니다.
답변1
아마도:
rg -iPlg '*{Key1*Key2,Key2*Key1}*.txt' '^(?=.*keyword1)(?=.*keyword2)' dir
를 사용하면 -P
미리보기 연산자가 포함된 PCRE 정규 표현식을 얻을 수 있으므로 ^
뒤에 임의 개수의 문자가 오면 줄의 시작 부분을 일치시킬 수 keyword1
있고 그 뒤에는 임의 개수의 문자가 올 경우 일치시킬 수 있습니다 keyword2
.
-g '*{Key1*Key2,Key2*Key1}*.txt'
csh 중괄호 확장과 유사한 -g '*Key1*Key2*.txt -g '*Key2*Key1*.txt'
약어 이며 {x,y}
표준 쉘 glob 모드에 대한 ripgrep 확장입니다.