如何在Linux中的子文件夹中grep特定的*名称?

grep所有子文件夹中的一些string我可以使用:

grep -rl "test" /path 

我想grep一些特定的string,假设string的第一部分和第二部分可能是不同的(有不同的开始和结束),是不区分大小写的。 我试图做这样的事情,但它不起作用:

 grep -rli "*test*" /path 

你能告诉我如何做到这一点?

为了清楚我想find包含子文件夹的所有文件(grep),其中有特定的string,例如:

 "*test*" 

你应该尝试grep接受perl正则表达式 :

 grep -irlP ".*test.*" /path 

.*表示匹配(零次或多次)除换行符以外的任何字符。 更多关于元字符在这里

你几乎可以使用任何正则表达式,所以它是一个非常灵活的解决方案来匹配复杂的模式。 例如,如果您仅搜索整个单词:

 grep -rlP "\b(test)\b" /path 

当然有限制。 例如,用这种方法进行多行搜索可能很困难。

您可以使用"--include"选项来尝试

 grep -rli --include="test*" /path 

从grep的手册页

–include = GLOB

仅搜索基本名称与GLOB匹配的文件(使用通配符匹配,如–exclude下所述)。

 grep -ilr "string" path/to/subdir 

也会搜索子字符串。 grep的搜索模式 – 你不需要这些星号(或点星号在我的编辑前的答案)。

如果你想搜索确切的单词,而不是在子字符串中的存在,使用-w选项。