특정 파일 형식에서 특정 텍스트를 어떻게 검색합니까? [복제]


13

가능한 중복 :
일부 텍스트의 소스 파일을 어떻게 grep 할 수 있습니까?

현재 디렉토리에서 특정 파일 유형의 특정 텍스트를 재귀 적으로 검색하는 명령은 무엇입니까?


무엇을 반품 하시겠습니까? 텍스트가있는 줄? 텍스트가있는 파일의 이름?
MaQleod

@MaQleod : 가능하다면 (파일 이름 + 줄 번호 + 스 니펫) 좋을 것입니다.
Phillip

@slhck : ack-grep이 설치되지 않았습니다. 설치할 권한이 없습니다.
Phillip

1
당신은 필요하지 않을 것입니다 ack-grep, 당신은 질문의 예제를 시작한 것처럼 사용할 수 있습니다 (예 : 말한 것처럼) find | xargs | grep. 특정 출력의 경우 man grep항상 읽는 것이 좋습니다.
slhck

@ slhck : 감사합니다. 그래서 grep -r --include=*.<type> "<string>" .작동했습니다. 불행히도 맨 페이지는 후행 점을 언급하는 데 그리 간단하지 않습니다.
Phillip

답변:


11
find . -type f -name '*.extension' | xargs grep "string"

이 명령은 이름이 * .extension 패턴과 일치하는 파일에 대해 로컬 디렉토리 (.)에서 find 를 실행 한 다음 find 결과에서 "string"에 대해 grep 을 실행 합니다 . 이주의 발견은 본질적으로 재귀입니다. 원하는 파일을 이름을 기준으로하지 않는 파일과 구별 할 수있는 한 이것이 효과가 있습니다.


2
공백이 포함 된 파일 이름으로 구분 print0되므로 더 안전한 옵션을 사용해야합니다 .
slhck

find -print0하지 도움도 사용합니다 xargs -0:find . -type f -name "*.ext" -print0 | xargs -0 grep "string"
BurninLeo

0

파일 이름, 지정된 파일의 줄 번호 및 줄을 나열하려면 다음과 같이하십시오.

for x in *.xxx; do [ -r $x ] | cat $x | grep -n TEXT | xargs printf "$x:%s\n";done

현재 디렉토리에서만 실행되지만 형식이 잘 맞습니다.

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