현재 디렉토리에서 재귀 적으로 문자열 검색


15

특정 문자열에 대한 디렉토리에서 모든 파일을 재귀 적으로 검색하고 싶습니다.

나는 시도했다

grep -r -i my_string

두 개의 작은 파일이있는 테스트 폴더에서 시도했지만 문자열을 찾지 못했습니다.

또한 단어 전체를 일치시키는 대신 "포함"을 정의하는 특별한 방법이 있습니까?


3
시도 grep -r -o -i "your_string" *"(따옴표 포함)
pl1nk

몇 가지 권한이 거부 된 메시지를 받고 있습니다. 파일을 무시하고 나머지는 계속 확인합니까?
David

맞습니다.이 파일들은 무시됩니다.
pl1nk 2016 년

답변:


27

파일 이름이나 파일 내부의 단어를 검색하고 있습니까? grep은 파일 내부에서 검색하며 원하는 것 같습니다.

grep은 정규 표현식을 사용합니다. 실제로 "re"부분이 의미합니다. 따라서 일반적인 bash 와일드 카드를 사용하지 않습니다. 즉, abc*abc로 시작하는 단어를 찾지 못하면 ab로 시작하는 단어를 찾은 다음 0 개 이상의 c를 따릅니다. 그러나 그렇습니다. 단순히 패턴을 주면 단어 전체에 대한 지식없이 어디서나 찾을 수 있습니다. 전체 단어를 찾으려면 정규식을 작성해야합니다.

그러나 대부분의 명령과 마찬가지로 명령 끝에 파일 이름을 넣어야하므로 예제는 거기에 앉아서 파일 이름을 기다립니다.

@plink가 말했듯이

grep -r -o -i "your_string" *

(또는 *.*, 또는 다른 파일 사양). 오류는 무시할 수 있습니다. 많은 오류가 발생 2>/dev/null하면 끝에 추가 하여 stderr을 null 장치로 리디렉션합니다.


6
궁금한 점은 -r은 재귀를 의미합니다 (즉, 현재 폴더 및 현재 폴더의 모든 폴더와 해당 폴더의 모든 폴더를 찾습니다. 무한대까지). -o는 전체 줄을 표시하지 않음을 의미합니다. -i는 대소 문자를 무시합니다.
BKSpurgeon

@johnsnails 백틱은 필요하지 않습니다. 인라인 코드 블록으로 게시 할 때 Stack Exchange에서 서식 오류 일 가능성이 높습니다.
tom_mai78101

예, 말이됩니다.
johnsnails 9
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.