grep을 사용하여 현재 디렉토리에서 “hello”라는 문자열이 포함 된 모든 파일을 검색하고 .h 및 .cc 파일 만 표시하려면 어떻게해야합니까?
답변
grep -r --include=*.{cc,h} "hello" .
이 .
(현재) 디렉토리 에서 “hello”를 포함하는 모든 .cc 또는 .h 파일을 재귀 적으로 검색합니다 (모든 하위 디렉토리에서도).
답변
파일 이름을 지정하거나 stdin을 사용하는 대신 와일드 카드를 전달할 수 있습니다.
grep hello *.h *.cc
답변
find . -name \*.cc -print0 -or -name \*.h -print0 | xargs -0 grep "hello"
.
에 대한 매뉴얼 페이지 확인 find
및 xargs
자세한 내용을.
답변
현재 디렉토리에서 재귀 적으로 검색하려면 다음을 수행하십시오.
grep -r 'myString' .
답변
재귀 검색이 필요한 경우 다양한 옵션이 있습니다. 고려해야합니다ack
합니다.
당신이 GNU이있는 경우, 그 실패 find
와 xargs
:
find . -name '*.cc' -print0 -o -name '*.h' -print0 | xargs -0 grep hello /dev/null
를 사용 /dev/null
하면 파일 이름을 인쇄 할 수 있습니다. -print0
및-0
공백이 포함 된 파일 이름 (뉴 라인 등)와 거래.
공백이있는 이름이 모호하지 않은 경우 다음을 사용할 수 있습니다.
find . -name '*.*[ch]' -print | xargs grep hello /dev/null
패턴 일치가 더 지저분하지만 (더 간단하지만) 작동하지 않기 때문에 의도하지 않은 몇 가지 이름을 선택할 수 있습니다. 그리고 비 GNU 버전과 find
및에서 작동 xargs
합니다.
답변
질문을주의 깊게 읽으면 “현재 디렉토리에서 모든 파일 을 검색하도록 grep하십시오” “hello”문자열을 포함하는 을 .h 및 .cc 파일 만 표시 하십시오. 정확한 요구 사항을 충족시키기 위해 여기 내 제출물이 있습니다.
파일 이름이 표시됩니다.
grep -lR hello * | egrep '(cc|h)$'
… 이것은 파일 이름과 내용을 표시합니다 :
grep hello `grep -lR hello * | egrep '(cc|h)$'`
답변
grep -l hello **/*.{h,cc}
shopt -s nullglob
.h 또는 .cc 파일이없는 경우 오류 메시지를 피할 수 있습니다 .
