如何在目录下的所有文件中找到一个字符串?

时间:2014-02-21 17:41:00

标签: shell

我有一个包含来自库的一堆头文件的目录。我想看看如何定义“Uint32”。

因此,我需要一种方法来扫描所有这些头文件并使用“Uint32”打印出行。

我猜grep可以提供帮助,但我是shell脚本的新手。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

有两种方法。

grep -r --include="*.c" Unit32

是一种方式。

另一个是:

find . -name "*.c" | xargs grep Unit32

如果文件名中有空格,后者可能会有问题。

find . -name "*.c" -print0 | xargs -0 grep Unit32

通常会解决这个问题。

答案 1 :(得分:0)

只需简单grep即可:

grep "Uint32" *.h*

这将搜索*.h*.hpp标头文件。

答案 2 :(得分:0)

虽然使用grep很方便,但对于导航代码,您可能还需要调查ack(源代码识别grep变体)和/或ctags(它与vi或emacs集成,允许在编辑器中导航代码)

ack特别是非常好,因为它将在目录层次结构中导航,并且只能处理特定类型的文件(因此对于C,它将询问.c和.h文件,但忽略SCM修订版目录,备份文件等。)

当然,您确实需要某种形式的IDE来为您提供完整的代码库导航。