如何使用 bash 找到当前目录及子目录中 C 标头文件中包含某一特定字段的文件路径及行数?

2019-04-23 18:21:35 +08:00
 0x11901

RT 目前我的思路是使用 find 找到当前目录下所有头文件,然后使用 cat 打印其内容,再使用 grep 筛选关键字。问题是不知道怎么取到行数和路径,求指导。

find . -name "*.h" -exec cat {} + | grep ${reg} 

输出:

- (id)fetchUsersByIds:(id)arg1 conversationId:(id)arg2;
- (id)fetchUser:(long long)arg1 userSource:(long long)arg2 extModel:(id)arg3;
- (id)fetchUsersByIds:(id)arg1 userSource:(long long)arg2 extModel:(id)arg3;
- (id)fetchUser:(long long)arg1;
1042 次点击
所在节点    问与答
5 条回复
zbinlin
2019-04-23 18:55:17 +08:00
man grep

* 加 -n 显示行数
* 加 -H 显示文件路径
0x11901
2019-04-23 18:56:34 +08:00
@zbinlin 然而我这是 cat 出来的,来源是(standard input)
zbinlin
2019-04-23 18:58:22 +08:00
find . -name "*.h" | xargs -i grep -nH ${reg} {}
0x11901
2019-04-23 19:03:39 +08:00
@zbinlin 我改了一下:find . -name "*.h" -exec grep -nH ${reg} {} + 可行!,感谢🙏
rrfeng
2019-04-23 21:15:45 +08:00
grep -n -R xxx ./**/*.h

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/558012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX