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
'prosource' 카테고리의 다른 글
일부 컴퓨터에서 트랜잭션 범위가 자동으로 MSDTC로 에스컬레이션됩니까? (0) | 2023.05.08 |
---|---|
모듈 이름을 문자열로 지정하여 동적으로 가져오려면 어떻게 해야 합니까? (0) | 2023.05.08 |
C#에서 Excel 파일을 여는 방법은 무엇입니까? (0) | 2023.05.08 |
첫 번째 항목이 "ID"인 CSV 파일이 Excel에서 손상되었습니다. (0) | 2023.05.08 |
LINQ - 전체 외부 결합 (0) | 2023.05.08 |