하위 디렉토리 내의 특정 파일에서만 문자열 찾기


10

GetTypes()모든 C # 소스 파일 ( .cs)에서 디렉토리 / 하위 디렉토리 에서 함수를 찾아야한다고 가정 해 봅시다 .

사용 grep -rn GetTypes *.cs했지만에 오류가 발생했습니다 grep: *.cs: No such file or directory. 나는을 사용해야 grep -rn GetTypes *했지만이 경우에는 모든 파일뿐만 *.cs아니라 표시합니다.

.cs파일 에서만 문자열을 찾으려면 어떤 명령을 사용해야 합니까?


답변:


12

쉘이 bash ≥4 인 경우을 넣으 shopt -s globstar십시오 ~/.bashrc. 쉘이 zsh라면 좋습니다. 그럼 당신은 실행할 수 있습니다

grep -n GetTypes **/*.cs

**/*.cs*.cs현재 디렉토리 또는 하위 디렉토리에서 재귀 적으로 일치하는 모든 파일을 의미합니다 .

지원하는 쉘을 실행하지 않고 **grep이 지원 --include하는 경우 재귀 grep을 수행하고 grep특정 패턴과 일치하는 파일 만 고려하도록 지시 할 수 있습니다 . 파일 이름 패턴 주위의 따옴표를 참고하십시오. 셸이 아니라 grep으로 해석됩니다.

grep -rn --include='*.cs' GetTypes .

휴대용 도구 만 (일부 시스템에는없는 grep -r) find디렉토리 탐색 부분과 grep텍스트 검색 부분에 사용하십시오.

find . -name '*.cs' -exec grep -n GetTypes {} +

globstar현재 Bash 4+ 쉘 의 옵션 을 임시로 설정하려면 다음을 사용하십시오 shopt -s globstar.
tjanez

8

Billiant의 작은 grep / find 교체를 확인해야합니다 ack. 특히 소스 코드 파일의 디렉토리를 검색하도록 설정되어 있습니다.

당신의 명령은 다음과 같습니다.

ack --csharp GetTypes

4

GNU를 사용 grep하는 경우 재귀 디렉토리 탐색에 포함 할 파일을 지정할 수 있습니다.

grep --include '*.cs' -rn GetTypes .

(마지막 기간은 현재 작업 디렉토리를 순회의 루트로 나타냄)


4

find와 grep의 조합을 사용하고 있습니다.

find . -name "*.cs" | xargs grep "GetTypes" -bn --color=auto

의 경우 디렉토리로 find바꾸고 모든 파일을 찾으려면 .제거 -name할 수 있습니다.

를 들어 grep, -bn위치 및 줄 번호를 인쇄하고 --color당신이 찾고있는 무엇을 강조하여 눈을 도움이 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.