IT

grep을 사용하여 문자열“hello”가 있지만 .h 및 .cc 파일 만 표시하는 모든 파일의 현재 디렉토리를 검색하려면 어떻게합니까?

lottoking 2020. 7. 5. 07:49
반응형

grep을 사용하여 문자열“hello”가 있지만 .h 및 .cc 파일 만 표시하는 모든 파일의 현재 디렉토리를 검색하려면 어떻게합니까?


grep을 사용하여 현재 디렉토리에서 "hello"라는 문자열이 포함 된 모든 파일을 검색하고 .h 및 .cc 파일 만 표시하려면 어떻게해야합니까?


grep -r --include=*.{cc,h} "hello" .

.(현재) 디렉토리 에서 "hello"를 포함하는 모든 .cc 또는 .h 파일을 재귀 적으로 검색합니다 (모든 하위 디렉토리에서도).

다른 stackoverflow 질문에서


파일 이름을 지정하거나 stdin을 사용하는 대신 와일드 카드를 전달할 수 있습니다.

grep hello *.h *.cc

find . -name \*.cc -print0 -or -name \*.h -print0 | xargs -0 grep "hello".

에 대한 매뉴얼 페이지 확인 findxargs자세한 내용을.


질문을주의 깊게 읽으면 "hello"문자열이 포함 된 모든 파일현재 디렉토리에서 검색하고 .h 및 .cc 파일 만 표시 하도록 grep 하십시오. 정확한 요구 사항을 충족시키기 위해 여기 내 제출물이 있습니다.

파일 이름이 표시됩니다.

grep -lR hello * | egrep '(cc|h)$'

... 이것은 파일 이름과 내용을 표시합니다 :

grep hello `grep -lR hello * | egrep '(cc|h)$'`

현재 디렉토리에서 재귀 적으로 검색하려면 다음을 수행하십시오.

grep -r 'myString' .

재귀 검색이 필요한 경우 다양한 옵션이 있습니다. 고려해야 ack합니다.

당신이 GNU이있는 경우, 그 실패 findxargs:

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 -l hello **/*.{h,cc}

shopt -s nullglob.h 또는 .cc 파일이없는 경우 오류 메시지를 피할 수 있습니다 .


가장 간단한 방법 : grep -Ril "Your text"/

참고 : https://stackoverflow.com/questions/9217185/how-do-i-use-grep-to-search-the-current-directory-for-all-files-having-the-a-str

반응형