답변:
--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. 좋은!