prosource

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

probook 2023. 5. 8. 22:20
반응형

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

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

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

다음과 같이 읽힙니다. "안녕"이 포함된 모든 .cc 또는 .h 파일을 재귀적으로 검색합니다(모든 하위 디렉터리에서도 검색 가능)..(현재) 디렉터리

다른 스택 오버플로 질문에서

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

grep hello *.h *.cc

현재 디렉터리에서 재귀적으로 검색하는 방법

grep -r 'myString' .

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

다음에 대한 설명서 페이지 확인find그리고.xargs상세한 것은

질문을 자세히 읽어보면 "hello" 문자열이 포함된 모든 파일에 대해 현재 디렉터리를 검색하고 .h 및 .cc 파일만 표시하십시오."라고 묻습니다.정확한 요구 사항을 충족하기 위해 다음과 같이 제출합니다.

파일 이름이 표시됩니다.

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

...파일 이름과 내용이 표시됩니다.

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

재귀 검색이 필요한 경우 다양한 옵션을 사용할 수 있습니다.고려해야 합니다.

만약 당신이 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 -l hello **/*.{h,cc}

당신은 원할지도 모릅니다.shopt -s nullglob.h 또는 .cc 파일이 없는 경우 오류 메시지를 방지합니다.

가장 간단한 방법: grep -Ril "당신의 텍스트" /

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

반응형