![주어진 함수를 포함하는 모든 파일을 찾는 방법은 무엇입니까?](https://linux55.com/image/2419/%EC%A3%BC%EC%96%B4%EC%A7%84%20%ED%95%A8%EC%88%98%EB%A5%BC%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
함수가 포함된 모든 파일을 나열하려고 합니다 matrixCal
.
Linux에서 이 작업을 어떻게 수행할 수 있나요?
답변1
그렙은 괜찮나요?
grep -R matrixCal /location/of/your/code
답변2
당신은 이 프로그램에 관심이 있을 것입니다ack
. 이는 소스 코드 디렉토리를 검색하고 읽기 쉬운 형식으로 유용한 콘텐츠를 반환하도록 특별히 설계되었습니다. 기본적으로 동일한 작업을 수행 grep
하지만 더 친숙한 형식입니다.
답변3
전통적인 접근 방식은 소스 코드에 함수 및 변수 정의의 색인을 생성하고 편집기를 사용하여 색인을 검색하는 것입니다. 전통적인 인덱싱 명령은 다음과 같습니다.ctags
tags
vi에서 사용할 수 있는 파일을 생성합니다 . Emacs는 다음과 같은 기능을 제공합니다.etags
주문하다(파일 이름은 TAGS
).
예를 들어, C 소스 트리의 경우 다음을 TAGS
통해 Emacs용 파일을 생성할 수 있습니다.
find -type f -name '*.[hc]' -exec etags {} +
Subversion에서 체크아웃된 대규모 소스 트리의 경우 여기에 두 가지 개선 사항이 있습니다. .svn
디렉터리를 무시하고 너무 길어서 명령줄 길이 제한을 초과할 수 없는 파일 계층을 처리합니다(각 연속 호출이 etags
처음부터 문서에서 다시 작성되기 때문에 파일이 잘립니다). ).
: >TAGS
find -type d -name .svn -prune -o \
-type f -name '*.[hc]' -exec etags -a {} +
그런 다음 Emacs에서 한 번 실행 하고 파일을 M-x visit-tags-table
선택하십시오 . TAGS
단어 위에 커서를 놓고 ( )를 matrixCal
눌러 정의로 이동합니다(필요한 경우 정의가 포함된 파일을 엽니다). 발생 사이를 반복하려면 를 실행 하고 입력하여 한 발생으로 이동한 후 ( )를 사용하여 다음 발생으로 이동합니다. 버퍼 에서는 기호가 사용되는 위치에 대한 개요가 제공됩니다.M-.
find-tag
M-x tags-search
^matrixCal$
M-,
tags-loop-continue
TAGS
M-x occur RET matrixCal RET