특정 파일 확장자에서 grep을 재귀적으로 사용하는 방법

특정 파일 확장자에서 grep을 재귀적으로 사용하는 방법

grep 문자열 및 정규식 패턴을 일치시킬 수 있는 훌륭한 Linux 파일 검색 및 표준 입력 도구입니다. 그러나 때로는 grep 찾을 파일을 제어해야 하며 이를 위해 내장 플래그가 있습니다.

grep 검색에 특정 파일만 포함

기본적으로 재귀  플래그 grep 로 호출하면 지정된 폴더와 해당 하위 폴더의 모든 파일을 검색합니다 . -r이렇게 하면 모든 것이 선택되지만 특정 확장만 원하는 경우 사용하려는 옵션은 다음과 같습니다.--include.

플래그 는 특정 패턴과 일치하는 파일만 포함하도록 --include지정 합니다. grep지정하면 grep 활성화된 모든 플래그가 화이트리스트로 처리됩니다. 와일드카드와 같은 Linux glob 문자 와 함께 이것을 사용 하여 특정 확장자를 포함한 모든 항목과 일치시킬 수 있습니다.

grep -inr --include \*.txt "foo"~/folder

\ 파일 이름에 별표가 있을 수 있으므로 슬래시로 이스케이프됩니다 . --include 예를 들어 wwwroot에서 모든 HTML, JS 및 CSS 소스 파일을 검색하기 위해 여러 플래그를 지정할 수도 있습니다 .

grep -inr --include \*.html --include \*.css --include \*.js "foo"~/folder

마찬가지로, glob 이외의 항목과 여전히 일치하는 특정 파일 이름을 제외할 수도 있으며 기존 구성 위에 블랙리스트 역할을 합니다.

grep -inr --exclude \*.txt "foo"~/folder

한 번에 전체 디렉토리를 제외하는 플래그도 있습니다.

grep -inr --exclude-dir config "foo"~/folder

대신 검색 사용

또는 파일 찾기 유틸리티를 사용하려는 경우  채널 및 파일 find 에 연결할 수 있습니다 .  패턴 및 정규식을 사용하여 검색할 수 있으며 크기, 생성 및 수정 날짜 및 기타 Linux 식별자와 같은 메타데이터를 기반으로 파일을 쉽게 필터링하는 기능을 포함하여 많은 이점이 있습니다.grepxargsfind

 명령은 한 줄 목록을 인쇄한 다음  앞뒤로 전달하기 -print0 위해 끝에 사용해야 하므로 약간 멍청 합니다  .findxargs -0grep

 find. / -type f -iname "*.txt"-print0 | xargs -0 grep "foo"

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다