2013-01-13 51 views
1

我试图做一个目录中递归搜索,寻找其中发生在我的代码文件中的字符下面的一系列实例:递归的grep搜索文件中的特殊本地字符(C++运算符)

- =

我在命令行使用以下命令:

grep -rn -= --include=*.hpp . 

我收到以下错误信息:

grep: invalid option -- '=' 
Usage: grep [OPTION]... PATTERN [FILE]... 
Try `grep --help' for more information. 

不幸的是,帮助不能解决我的问题(或者至少,我看不出如何解决我的问题)。

回答

2

尝试:

grep -rn --include=*.hpp -- -= . 

的问题是,-=被解释为命令行选项。使用--来表示命令行选项的结束,所以-=被解释为模式。

+0

是的,它的工作原理。我会尽快接受你的回答(约5分钟) –

+0

谢谢!另外请注意,doomster是正确的,如果在你运行这个目录的目录中有任何'.hpp'文件,那么你可能会想''''以避免shell在grep看到它之前将它匹配。例如。 '--include ='*。hpp''。 –

+0

传统的解决方案是'grep -rne - = --include = *。hpp。' - '-e'选项允许您传入以破折号开头的正则表达式。 – tripleee

1

grep -r -- -= .也许? --将选项(以 - 开头)与命令行的其余部分分开。 BTW:您可能需要隐藏你的shell星号,即使用--include=\*.hpp