특정 파일 확장자에서 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 식별자와 같은 메타데이터를 기반으로 파일을 쉽게 필터링하는 기능을 포함하여 많은 이점이 있습니다.grep
xargs
find
명령은 한 줄 목록을 인쇄한 다음 앞뒤로 전달하기 -print0
위해 끝에 사용해야 하므로 약간 멍청 합니다 .find
xargs -0
grep
find. / -type f -iname "*.txt"-print0 | xargs -0 grep "foo"
답글 남기기