如何使用grepsearch当前目录中所有具有string“hello”的文件,但只显示.h和.cc文件?
如何使用grep在当前目录中search包含string“hello”的任何和所有文件,并仅显示.h和.cc文件?
grep -r --include=*.{cc,h} "hello" .  它读取:recursionsearch(也在所有子目录中)包含“hello”的所有.cc或.h文件.  (当前)目录 
从另一个stackoverflow问题
您可以传入通配符而不是指定文件名或使用stdin。
 grep hello *.h *.cc 
 find . -name \*.cc -print0 -or -name \*.h -print0 | xargs -0 grep "hello"  find . -name \*.cc -print0 -or -name \*.h -print0 | xargs -0 grep "hello" 。 
 有关详细信息,请查阅find和xargs的手册页。 
如果你需要recursionsearch,你有多种select。 你应该考虑一下。
 否则,如果你有GNU find和xargs : 
 find . -name '*.cc' -print0 -o -name '*.h' -print0 | xargs -0 grep hello /dev/null 
 使用/dev/null可以确保您获得打印的文件名;  -print0和-0处理包含空格的文件名(换行符等)。 
如果你没有名字(空格等),你可以使用:
 find . -name '*.*[ch]' -print | xargs grep hello /dev/null 
 这可能会select一些你不打算的名字,因为模式匹配比较模糊(但更简单),但是其他的方法是可行的。 它适用于非GNU版本的find和xargs 。 
如果我仔细阅读你的问题,你要求“grep在当前目录中search包含string”hello“的任何和所有文件 ,并只显示”.h和.cc文件“。 所以为了满足你的确切要求,这里是我的提交:
这显示文件名称:
 grep -lR hello * | egrep '(cc|h)$' 
…并显示文件名和内容:
 grep hello `grep -lR hello * | egrep '(cc|h)$'` 
 grep -l hello **/*.{h,cc} 
 如果没有.h或没有.cc文件,您可能需要购买shopt -s nullglob以避免出现错误消息。 
最简单的方法:grep -Ril“Your text”/