파일 확장자 별 git grep


92

특정 확장자를 가진 파일에서만 패턴을 grep하려는 경우 다음과 같이 할 수 있습니다.

// searches recursively and matches case insensitively in only javascript files
// for "res" from the current directory
grep -iIr --include=*.js res ./

나는 git grep을 통해이 작업을 수행하는 방법을 찾고 있었지만 (트리와 함께 저장하는 인덱스에서 git grep의 속도를 활용하기 위해) 아무 소용이 없습니다. 여기서 특정 파일 형식을 제외 할 수 없다는 것을 알았 습니다 .

답변:


146

예, 예 :

git grep res -- '*.js'

4
하나 약간의 수정은 - 당신이 당신의 저장소의 루트에하지 않으면, git grep res -- '/*.js'... 더 좋을 수도
twalberg

1
@twalberg :하지만 댓글은 그가 현재 디렉토리 [아래로]에서보고 싶다고 제안합니다.
CB Bailey

3
그냥 추가 정보 : 당신은 당신이 사용할 수있는 파일 확장자의 집합을 지정하려면 git grep res -- *.js *.cs이 다른에 덮여 질문
stk_sfr

3
무엇을 --성취합니까?
aehlke

1
잊지 말아야 할 중요한 점은 '* .js'를 작은 따옴표로 묶는 것입니다. 그들이 거기에 없으면 작동하지 않습니다. (쉘은 git에 도달하기 전에 가로 챌 것입니다).
hasen

3

이것을 시도하십시오 :

find . -type f -iname '*.js' -exec grep -i 'pattern' {} +

1
{}현재 파일이며 +동시에 최대 인수를 처리하는 것을 의미합니다 {} \;(한 번에 하나의 파일 만). 확인man find
Gilles Quenot

질문은 "git"grep을 요구합니다.
jok apr

0

모든 지점에서 검색하려면 다음을 사용할 수 있습니다.

git log -Sres --all --name-only -- '*.js'

(나는 당신이 git grep을 지정하는 것을 본다; 나에게 여기의 접근 방식은 내가 일반적으로 필요한 다른 작업과 비슷하게 더 간단하고 기억하기 쉽게 보인다.)

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