如何搜索包含特定字符串的所有文件?

时间:2012-04-08 20:03:35

标签: string search recursion

假设您正在开发一个包含多个文件,目录和子目录的大项目。在其中一个目录/子目录/文件中,您已经定义了一个方法,但现在您想要确切知道整个项目中的哪些文件已经调用了您的方法。你是怎么做到的?

2 个答案:

答案 0 :(得分:0)

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

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

你只需键入M-。并输入您要访问的功能的名称,emacs将带您到那里。

我不知道您使用的系统或编辑器,但大多数编辑器都具有类似的功能。

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

如果您不使用版本控制系统,您可能需要查看专为搜索而设计的程序。与OpenGrok一样。

答案 1 :(得分:0)

你提到grep所以我会把这个解决方案扔出去。一个更强大的解决方案是实现像Fibbe建议的版本控制系统。

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

这个想法是,对于在当前目录和子目录中找到的每个文件,在该文件上执行'method_name'的grep。如果您不希望收到有关您无权访问的所有目录和文件的警告,2> /dev/null会很好。