2014-02-14 177 views
1

我经常做不同的项目,有时缺少文档。在源代码中搜索

所以我决定使用开源代码来查看人们如何解决不同的问题。

这个想法是,如果我运行功能,我不怎么使用我寻找不同的开发人员使用该功能之前。

方法: 我下载了其他人完成的一些相当不错的项目,并将它们放到一个文件夹中。

现在,如果我不知道怎么一个功能时(如主()),我做的:

find . -name \*.py | xargs cat | grep -n "main()" 

因此我得到它的使用的例子: enter image description here

但有是一个问题。我不知道来自哪个文件的例子。如果可以获取文件的名称以及行数,这将是完美的。
它似乎是使用“猫”命令的限制,因为它将所有文件混合在一起,因此我得到的信息不是在文件中,而是在猫输出中。所以我觉得这种方法根本不好。

即 我希望能够在过多的源代码 中查找函数/符号,并获得有关符合某个组合的行和文件的信息。
我更喜欢console-way。

有什么建议吗?

回答

3

试试这个:

find . -name \*.py -exec grep -nH "main()" {} \; 

说明

的 “-exec” 选项说,执行下面的命令,直到\;找到每个文件。

grep的“-H”选项会导致它打印找到该字符串的文件的名称。

“-n”选项会导致grep打印行号。

{}是一个占位符,扩展为刚刚找到的“find”文件的名称。

+0

什么是“-exec”选项? – Tebe

+0

它执行后面的命令,直到\;你可以使用{}作为它找到的文件的名字 –

0

我不会从bash的角度回答你。

我不知道您使用的编辑器/ IDE,但代码解剖有我那么没有更好的工具:

  • 的Vim C标签组合
  • CTRL-P,CTRL-P时髦和MRU插件+
  • 正确的搜索和正则表达式的用法。
  • 良好的vim调试

没有代码的一部分不能被检查。对不起,如果使用其他工具,我只是建议你,我发现哪些是最适合我的代码分析。

1

你只需要grep命令:

$ grep -nr 'main()' /path/to/projects/folder/* | grep '.py:' 
+0

很好的答案!尽管它有一个缺陷。这就是说,搜索不仅在.py扩展名的文件中完成,而且也在所有其他文件中(二进制例如http://minus.com/lHB8dOeYP9YuA)完成。什么来自使用搜索模式/路径/到/项目/文件夹/ *。使用第二个grep可以隐藏这个效果。但它如此如此解决 – Tebe