如何在目录下的c文件中搜索文本

时间:2011-02-01 23:12:06

标签: emacs

我查看了几个类似的问题,但要么我不理解他们的答案,要么我的问题与他们的不同。所以,我有一个项目包含许多子目录和不同类型的文件。我想在这些.C文件中搜索一个函数名。

网上的一些信息建议使用“Esc x dired-do-query-replace-regexp”。但是,这不仅会搜索C文件,还会查找像.elf这样的其他文件,在我的情况下这不是帮助文件。其他人建议使用TAG功能,但它需要我为每个子目录输入“etags * .c”,这也是不可能的。

在处理这些大型软件项目时,我该如何做?

由于 利

6 个答案:

答案 0 :(得分:3)

在linux上使用ack-grep

ack-grep "keyword" -G *.c

答案 1 :(得分:1)

我的最爱:igrep-find,可在包igrep.el中找到。用法是:

M-x igrep-find some_thing RET *.C

内置grep-find,文档here,但我觉得使用起来很尴尬。

有关更一般的答案,请参阅此类似问题:Using Emacs For Big Big Projects

答案 2 :(得分:1)

如果您使用的是Linux,则可以使用grep查找包含特定文本的文件。然后,您将在shell /命令提示符下的emacs之外执行此操作。这是一个很好的语法:

grep --color=auto --include=*.c -iRnH 'string to search for' /dir/to/search/

要搜索的目录可以相对指定,因此如果您在目录中要用作递归搜索的根目录,则可以跳过整个目录地址并指定一个点。

grep --color=auto --include=*.c -iRnH 'string to search for' .

部分 - color = auto 会突出显示一些文字。 - include = *。c 是指定要搜索的文件的部分。 在这种情况下,只有带有c扩展名的文件。标志i使得东西不敏感,标志R使搜索递归,标志n将行号添加到报告中,标志H将文件路径添加到报告中。

答案 3 :(得分:1)

为了繁殖find和grep,有 find-grep 函数,你可以在那里将调用字符串更改为find . -name *.c等。如果你愿意的话,把它变成一个函数。然后你用eg。 C-x `等。导航结果。

要在一个目录中搜索我使用 lgrep 的文件,它会提示您搜索哪些文件。

答案 4 :(得分:0)

您可以使用cscope和xcscope.el:http://www.emacswiki.org/emacs/CScopeAndEmacs

答案 5 :(得分:0)

尝试使用 dired :将光标放在要搜索的目录名称上,键入 A ,然后在迷你缓冲区中输入要查找的文本。