grep --include 的作用类似于 --exclude

grep --include 的作用类似于 --exclude

我正在尝试使用 grep 的 --include 选项,但它的行为并不符合我的预期。

考虑这个简化的测试:

设置

me@de31:~/tmp$ cat file.h
This is a .h file
me@de31:~/tmp$ cat file.c
This is a .c file

核实

me@de31:~/tmp$ grep "This is a" *
file.c:This is a .c file
file.h:This is a .h file

使用--include

me@de31:~/tmp$ grep "This is a" * --include="*.c"
file.h:This is a .h file

me@de31:~/tmp$ grep "This is a" * --include="*.h"
file.c:This is a .c file

使用--排除

me@de31:~/tmp$ grep "This is a" * --exclude="*.c"
file.h:This is a .h file

me@de31:~/tmp$ grep "This is a" * --exclude="*.h"
file.c:This is a .c file

如您所见,--include 与 --exclude 具有相同的输出。 stackexchange 上的另一篇文章声称“-r”是必需的,但我也尝试过,并且它没有改变输出。

答案1

这似乎是某种错误。在 Ubuntu 启动板上发现了这个错误文件,标题为:--include 与 --exclude 的作用相同!

我的 Fedora 14 系统上的示例:

$ more file.*
::::::::::::::
file.c
::::::::::::::
This is a .c file

::::::::::::::
file.h
::::::::::::::
This is a .h file

包括

$ grep "This is a" * --include="*.c"
file.c:This is a .c file
$ grep "This is a" * --include="*.h"
file.h:This is a .h file

排除

$ grep "This is a" * --exclude="*.c"
file.h:This is a .h file
$ grep "This is a" * --exclude="*.h"
file.c:This is a .c file

grep 版本

$ grep --version
grep (GNU grep) 2.8

相关内容