在许多文件中查找单词

在许多文件中查找单词

我正在寻找这个struct messages_sdd_t,我需要搜索大量的 *.c 文件才能找到它。但是,我似乎找不到匹配项,因为我想排除所有单词“struct”和“messages_sdd_t”。因为我只想搜索“struct messages_sdd_t”,原因是,struct 被使用了很多次,我不断获得页面或搜索结果。

我一直这样做,但没有成功:

find . -type f -name '*.c' | xargs grep 'struct messages_sdd_t'

和这个

find . -type f -name '*.c' | xargs egrep -w 'struct|messages_sdd_t'

非常感谢您的建议,

答案1

使用确认

确认“结构消息_sdd_t”*.c

grep它默认是递归的,并且比搜索包含大量源代码的目录要快得多(根据我的观察)。

如果你不想使用ackgrep也可以:

grep -r“结构messages_sdd_t”*.c

答案2

find . -type f -name '*.c' -exec grep 'struct\s\+messages_sdd_t' {} \;

或者如果你只关心文件名:

find . -type f -name '*.c' -exec grep -q 'struct\s\+messages_sdd_t' {} \; -print

答案3

grep -R --include='*.c' 'struct messages_sdd_t' .

这将递归搜索并使用grep其自身仅选择.c文件。

考虑添加-H始终用行匹配来写入文件名。

相关内容