为什么"grep -r"不接受"*"?

Car*_*rla 1 regex bash grep

我正在使用很多grep -r [text]命令来递归定位文本,甚至捆绑在压缩文件中.但是我发现它不适用于"*"表达式:

$ grep -r "*.cert"

[nothing]

$ grep -r "ca.cert"

[entries found]
Run Code Online (Sandbox Code Playgroud)

逃避角色也无济于事.这是为什么?

fed*_*qui 7

你在某种程度上混淆了正则表达式的globs.在grep,您要搜索的表达式是正则表达式,因此您必须遵循其规则.

当通配时,*会扩展为任何字符.

使用正则表达式时,*是左边事物出现次数的量词.但是你没有在左边指定任何东西!

只是.用来表示任何角色:

grep -r ".*\.cert"
#        ^
Run Code Online (Sandbox Code Playgroud)

另请参阅我如何转义第二个点,因此它是一个文字点而不是元字符.