특정 저장소에 많은 파일이 있고 콘텐츠에 특정 문자열이 있는 파일을 찾아야 합니다(실제로 파일 참조 Version.cc.in
). 그것을 찾는 가장 좋은 해결책은 무엇입니까?
답변1
grep을 사용할 수 있습니다.
grep "text" /path/to/directory/*
-r
재귀 검색의 경우 grep 옵션을 사용할 수 있습니다 .
grep -r "text" /path/to/directory/*
또는 **
경로:
grep "text" /path/to/directory/**/*
그러나 **
운영자의 가용성은 쉘에 따라 다릅니다. 내가 아는 한 zsh
( bash
4개만?) 다른 쉘에서는 사용하지 못할 수도 있습니다.
답변2
라는 파일을 사용할 수 있습니다.확인하다. 설명은 다음과 같습니다.
ack는 대규모의 이기종 소스 코드 트리를 사용하는 프로그래머를 위해 설계된 grep과 유사한 도구입니다.
기본적으로 파일에서 패턴을 검색한다는 점에서 grep과 유사하지만 몇 가지 중요한 차이점이 있습니다. 즉, 기본적으로 버전 제어 및 백업 파일(예: CVS, .svn, foo~, #foo#)을 무시하고 반복적으로 검색합니다. Perl로 제작되었기 때문에 크로스 플랫폼입니다. 또한 검색할 디렉터리의 특정 파일 형식을 지정할 수 있으므로 Perl 파일만 검색하려는 경우 다음을 입력할 수 있습니다.
ack --perl pattern
관심이 있으시면 웹사이트에서 "Grep 대신 ack를 사용하는 10가지 이유" 목록을 찾아보실 수 있습니다.홈페이지 확인. 또한,Vim 플러그인.
답변3
답변4
실제 내용이 아닌 파일만 찾아서 나열하려면 -l
grep 옵션을 사용하십시오.
grep -lr Version.cc.in $(pwd)/*
그러면 절대 경로와 함께 모든 파일 목록이 제공됩니다(파일이 현재 작업 디렉터리의 디렉터리/하위 디렉터리에 있다고 가정).