如何查找包含给定函数的每个文件?

如何查找包含给定函数的每个文件?

我试图列出包含函数的所有文件,例如matrixCal.

我怎样才能在Linux中做到这一点?

答案1

grep 可以吗?

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将为您提供符号使用位置的概述。

相关内容