it-swarm-ko.com

grep 및 파일 패턴으로 재귀 텍스트 검색

이 예제 폴더 구조는 다음과 같습니다.

/folder1/file1.txt
/folder1/file2.djd
/folder2/file3.txt
/folder2/file2.fha

"/"에서 grep 인 모든 *.txt 파일에서 재귀 텍스트 검색을 수행하려면 어떻게합니까?

해당 폴더에 "grep -r <pattern> *.txt" 파일이 없으므로 "/"에서 실행할 때 .txt가 실패합니다.

46
Anders Sandvig

내 버전의 GNU Grep에는 다음과 같은 스위치가 있습니다.

grep -R --include='*.txt' $Pattern

다음과 같이 설명됩니다 :

--include=GLOB

기본 이름이 GLOB와 일치하는 파일 만 검색합니다 (--exclude에 설명 된대로 와일드 카드 일치 사용).

62
Kyle Brandt

파일 수가 많으면 'argument list too long'오류를 피하기 위해 xargs를 명령에 포함시키는 것이 유용합니다.

find . -name '*.txt' -print | xargs grep <pattern>
20
Mark

zsh 's EXTENDED_GLOB 옵션 ( docs )

grep <pattern> **/*.txt
2
santa

파일 유형별로 검색 할 파일을 선택하는 기능이있는 http://betterthangrep.com 에서 ack을 살펴볼 수 있습니다.

1
Andy Lester
find . -name '*.txt' -type f -exec grep <pattern> {} \;
0
innaM

Mannis 답변은 모든 텍스트 파일에 대해 새로운 grep 프로세스를 포크합니다. 텍스트 파일이 lots 인 경우 모든 파일을 먼저 그 리핑하고 .txt 파일을 선택하는 것이 좋습니다.

grep -r <pattern> * | grep \.txt:

디스크를 많이 사용하지만 어쨌든 더 빠를 수 있습니다.

0
Commander Keen

2019 년이며 재귀 텍스트 검색에 grep을 계속 사용할 방법이 없습니다.

오늘 IMHO의 답변에는 ripgrep 이 포함되어야합니다.

rg <pattern> -ttxt
0
santa