我正在寻找这个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
它默认是递归的,并且比搜索包含大量源代码的目录要快得多(根据我的观察)。
如果你不想使用ack
,grep
也可以:
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
始终用行匹配来写入文件名。