GetTypes()
모든 C# 소스 파일( ) 디렉터리/하위 디렉터리 .cs
에서 함수를 찾아야 한다고 가정해 보겠습니다 .
사용했는데 grep -rn GetTypes *.cs
오류가 났습니다 grep: *.cs: No such file or directory
. 사용해야 grep -rn GetTypes *
하는데 이 경우 모든 파일만 표시되는 것은 아닙니다 *.cs
.
.cs
파일에서 문자열만 찾으려면 어떤 명령을 사용해야 합니까?
답변1
쉘이 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 {} +
답변2
당신은 훌륭한 작은 grep/find 교체를 확인해야 합니다.ack
. 특히 소스 코드 파일에 대한 디렉터리를 검색하는 데 사용됩니다.
귀하의 명령은 다음과 같습니다:
ack --csharp GetTypes
답변3
GNU 를 사용하는 경우 grep
재귀 디렉터리 탐색에 포함할 파일을 지정할 수 있습니다.
grep --include '*.cs' -rn GetTypes .
(마지막 마침표는 순회를 위한 루트 디렉터리로 현재 작업 디렉터리를 나타냅니다.)
답변4
나는 find와 grep의 조합을 사용합니다.
find . -name "*.cs" | xargs grep "GetTypes" -bn --color=auto
예를 들어 모든 파일을 보려면 해당 디렉터리로 바꾸고 삭제할 find
수 있습니다 ..
-name
의 경우 grep
위치 -bn
와 줄 번호가 인쇄되어 --color
찾고 있는 내용을 강조 표시하여 눈에 도움이 됩니다.