10

我下载了一些程序的源代码并将其放在一个文件夹中我想从终端上的文件夹中找到一个函数声明,如何使用shell命令来做到这一点?谢谢!

4

3 回答 3

17

尝试这样做

使用

grep -Hri function_name .

如果你只想要路径:

grep -ril function_name .

解释

  • 尾随.代表当前目录
  • -i:不区分大小写
  • -r:递归
  • -H打印每个匹配的文件名
  • -l抑制正常输出;而是打印通常会从中打印输出的每个输入文件的名称。

man grep

最后但并非最不重要的

一个有趣的工具是ack,它可以避免在.svn, .cvs, .gitdirs 等中搜索......它旨在搜索代码。

例子 :

$ cd /usr/share/perl5
$ ack -r 'Larry\s+Wall'
site_perl/Inline/C.pm
370:# bindings to. This code is mostly hacked out of Larry Wall's xsubpp program.

core_perl/overload/numbers.pm
5:#    Copyright (C) 2008 by Larry Wall and others

core_perl/CPAN.pm
876:#       From: Larry Wall <larry@wall.org>

或只是文件路径:

$ ack -rl 'Larry\s+Wall'
vendor_perl/LWP.pm
site_perl/Inline/C.pm
core_perl/overload/numbers.pm
core_perl/CPAN.pm
core_perl/SelfLoader.pm
core_perl/AutoLoader.pm
core_perl/AutoSplit.pm
core_perl/Test/Harness.pm
core_perl/XSLoader.pm
core_perl/DB.pm

不需要.ack(相比grep)结尾

于 2013-03-28T23:08:54.470 回答
0

这将遍历您打开的目录和任何子目录中的所有文件(尽管如果文件或目录名称中有空格,它会搞砸),将在所有文件中搜索您放置的 FUNCTION,并将路径输出到文件并显示匹配的行。通过 ing 到您打开的目录来运行它cd(并将 FUNCTION 替换为您要查找的函数)。

find . -type f | xargs grep FUNCTION
于 2013-03-28T23:13:01.393 回答
0

尝试使用CScope。您还需要安装 vi/vim。

安装后,只需在要查找该功能的文件夹中运行以下命令:

cscope -R

之后,将出现一个菜单,显示许多选项以查找所有符号、函数定义、调用函数的函数等。

于 2015-06-23T18:16:03.267 回答