【问题标题】:how to find a function from a folder on linux如何从linux上的文件夹中查找函数
【发布时间】:2013-03-19 14:12:29
【问题描述】:

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

【问题讨论】:

  • 这个源代码中的函数声明是什么样的?
  • 我只想从一个文件夹里找字符串,文件夹里面有很多文件,子文件夹

标签: linux shell grep


【解决方案1】:

尝试这样做

使用

grep -Hri function_name .

如果你只想要路径:

grep -ril function_name .

说明

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

man grep

最后但并非最不重要的一点

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

例子:

$ 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 相比)

【讨论】:

  • 如果您想将搜索细化到特定文件类型并仍然使用 grep,您可以使用--include=*.&lt;file_postfix&gt;
【解决方案2】:

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

find . -type f | xargs grep FUNCTION

【讨论】:

  • 为什么中间有一个-
  • - 是必需的,但应附加到单词type。我会解决的,谢谢。
【解决方案3】:

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

安装好后,在你要查找功能的文件夹中运行以下命令即可:

cscope -R

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多