2012-04-08 128 views
0

假设您正在处理一个包含多个文件,目录和子目录的大项目。在其中一个目录/子目录/文件中,你已经定义了一个方法,但是现在你想知道整个项目中哪些文件已经调用了你的方法。你怎么做到这一点?如何搜索包含特定字符串的所有文件?

+0

用什么语言写你的项目? C++,java,..? – Rps 2012-04-08 20:08:44

+1

主要是java。但没有办法做到这一点使用“grep”莫名其妙? – 2012-04-08 20:09:55

回答

0

执行此操作的最常见方法是使用您的编辑器。例如,如果您使用etags创建标签索引,emacs可以执行此操作。

来源:http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/etags.html

的你只是类型M-。并输入您想要访问的功能的名称,emacs会将您带到那里。

我不知道你使用的是哪个系统或哪个编辑器,但大多数编辑器都有一个相似的功能。

如果您不使用emacs来跟踪功能并获得许多其他优秀功能的其他好方法,那就是使用版本控制系统。就像git一样,它提供了非常快速的搜索。

如果您不使用版本控制系统,您可能需要查看专门用于搜索的程序。像OpenGrok

0

你提到了grep,所以我会把这个解决方案放在那里。一个更强大的解决方案是按照Fibbe的建议实施版本控制系统。

find . -exec grep 'method_name' {} \; -print 2> /dev/null

的想法是,对于在当前目录和子目录中的每个文件,对“METHOD_NAME”一个grep在该文件执行。 2> /dev/null是不错的,如果你不想得到所有你无法访问的目录和文件的警告。

相关问题