首页
学习
活动
专区
圈层
工具
发布

grep
EN

Stack Overflow用户
提问于 2020-06-05 09:32:11
回答 2查看 2.2K关注 0票数 1

我只想要grep在源代码中的头文件。而且它似乎是众所周知的和已经解决的问题,但--include=不适合我:

代码语言:javascript
复制
$ grep -rnI --include=\*.h 'static volatile'
net/ipv4/ipconfig.c:174:static volatile int ic_got_reply __initdata;    /* Proto(s) that replied */
drivers/mtd/maps/sbc_gxx.c:83:static volatile int page_in_window = -1; // Current page in window.
drivers/parport/parport_mfc3.c:79:static volatile int dummy; /* for trigger readds */
^C

我希望只有具有.h扩展名的头文件。

顺便说一句,--exclude=运行得很好:

代码语言:javascript
复制
$ grep -rnI --exclude=\*.c 'static volatile'
arch/mips/include/asm/mach-pmcs-msp71xx/msp_gpio_macros.h:63:static volatile u32 * const MSP_GPIO_DATA_REGISTER[] = {
arch/mips/include/asm/mach-pmcs-msp71xx/msp_gpio_macros.h:83:static volatile u32 * const MSP_GPIO_MODE_REGISTER[] = {
arch/arm/mach-w90x900/include/mach/uncompress.h:28:static volatile u32 * const uart_base = (u32 *)UART0_PA;
arch/arm/mach-gemini/include/mach/uncompress.h:19:static volatile unsigned long * const UART = (unsigned long *)GEMINI_UART_BASE;
^C

UPD:

代码语言:javascript
复制
$ grep --version
grep (GNU grep) 2.27
...

$ type grep
grep is aliased to `grep --color --exclude=tags --exclude-dir="build*"'

但是,当别名以$ \grep -rnI --include=\*.h 'static volatile'的方式被取消时,它工作得很好。

那么为什么--exclude=要取消--include=呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-05 10:23:30

有关别名重写,请参见:别名

我找不到关于多个包含/排除规则如何影响所选择的文件的最终列表的文档。但我认为,在发生冲突时,可以放心地假定,在命令行中定义的最新规则获胜。

  • --exclude=tags将忽略任何名为tags的文件或目录。
  • --include='*.h'将允许匹配任何以.h结尾的文件。

在这种情况下,这两条规则之间没有冲突。第一个允许grep选择任何未命名为tags的文件。第二个命令告诉grep允许任何以.h结尾的文件

如果发生像--exclude='*foo.txt' --include='*.txt'这样的冲突,包含规则将覆盖排除规则,并且将考虑以foo.txt结尾的文件进行匹配。

票数 5
EN

Stack Overflow用户

发布于 2020-06-06 00:37:55

如果您只使用find来查找文件,在文件中查找文件,使用grepg/re/p (在工具名称中有一些微妙的线索说明它们的用途!)然后,您将不必处理guys在给grep选项find文件时创建的混乱、混乱和复杂的问题。

代码语言:javascript
复制
find . -type f -name '*.h' -exec grep -nIH 'static volatile' {} +

可能就是你所需要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62212221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档