답변:
--include
옵션 을 사용하는 것이 좋습니다 grep
.
grep -lr --include='*.c' search-pattern .
.
명령 끝에 있는 것이 무엇인지 혼란 스럽 습니다.
*.c
패턴은 쉘에 의해 평가된다. 사용하는 것처럼 현재 디렉토리에 적용됩니다 ls *.c
.
나는 당신이 원하는 것이 그 *.c
패턴과 일치하는 모든 파일을 (재귀 적으로) grep
찾아서 검색하는 것입니다. 이를 수행하는 방법은 다음과 같습니다.
find . -name "*.c" -print0 | xargs --null grep -l search-pattern
로 xargs
검색 결과를 추가하는 데 사용 됩니다 find
.
또는 다음과 같은 -exec
옵션을 사용하십시오 .
find . -name "*.c" -exec grep -l search-pattern "{}" \;
또한 -l
옵션 이 정말로 원하는지 확실하지 않습니다 grep
. 첫 경기에서 멈출 것이다 :
-l, --files-with-matches
Suppress normal output; instead print the name of each
input file from which output would normally have been
printed. The scanning will stop on the first match.
(-l is specified by POSIX.)
find/xargs
공간에 포함 된 파일명 구문 나누기. -L
의 옵션 grep
각 파일의 첫 경기에 정지하고 다음 파일을 계속 하나는 패턴이 각각의 주어진 파일에 한 번 이상에 포함되어 있는지 확인하려면, 그것은 빠릅니다.
-print0
및 옵션 을 사용하여 수정했습니다 xargs --null
.
--include=GLOB
옵션을 몰랐다 . 재귀 옵션과 함께 사용하면 매우 강력하고 필요하지 않습니다find
. 좋은!