Shell 递归grep搜索文件中的特殊字符(C+;+;运算符)
我试图在目录中进行递归搜索,查找代码文件中出现以下字符序列的实例: -= 我正在CLI上使用以下命令:Shell 递归grep搜索文件中的特殊字符(C+;+;运算符),shell,command-line,grep,Shell,Command Line,Grep,我试图在目录中进行递归搜索,查找代码文件中出现以下字符序列的实例: -= 我正在CLI上使用以下命令: grep -rn -= --include=*.hpp . 我收到以下错误消息: grep: invalid option -- '=' Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information. 不幸的是,这些帮助对解决我的问题没有多大帮助(或者至少,我看不出它是如何解决我的问题的)。
grep -rn -= --include=*.hpp .
我收到以下错误消息:
grep: invalid option -- '='
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
不幸的是,这些帮助对解决我的问题没有多大帮助(或者至少,我看不出它是如何解决我的问题的)。grep-r--=。
也许?--
将选项(以-)与命令行的其余部分分开。顺便说一句:您可能必须在shell中隐藏星号,即使用--include=\*.hpp
尝试:
grep -rn --include=*.hpp -- -= .
问题是
-=
被解释为命令行选项。使用-
表示命令行选项的结束,因此-=
被解释为一种模式。是的,可以。我会尽快接受你的回答(大约5分钟内),谢谢!还要注意的是,doomster是对的,如果在您运行此操作的目录中有任何.hpp
文件,您可能希望转义该*
,以避免shell在grep
甚至看到它之前将其全球化。例如,--include='*.hpp'
。传统的解决方案是grep-rne-=--include=*.hpp.
---E
选项允许您传入以破折号开头的正则表达式。