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

如何在Linux的子文件夹中grep特定的*name*?,linux,grep,find,Linux,Grep,Find,要grep所有子文件夹中的某些字符串,我可以使用: grep -rl "test" /path 我想grep一些特定的字符串,假设字符串的第一部分和第二部分可能不同(有不同的开始和结束),并且不区分大小写。 我尝试过这样做,但没有成功: grep -rli "*test*" /path 你能告诉我怎么做吗 为了清楚起见,我想查找所有文件(grep),包括子文件夹,其中有特定字符串,例如: "*test*" 您可以使用“--include”选项进行如下尝试: grep -rli --incl

要grep所有子文件夹中的某些字符串,我可以使用:

grep -rl "test" /path
我想grep一些特定的字符串,假设字符串的第一部分和第二部分可能不同(有不同的开始和结束),并且不区分大小写。 我尝试过这样做,但没有成功:

grep -rli "*test*" /path
你能告诉我怎么做吗

为了清楚起见,我想查找所有文件(grep),包括子文件夹,其中有特定字符串,例如:

"*test*"

您可以使用
“--include”
选项进行如下尝试:

grep -rli --include="test*" /path
从grep的手册页

--include=GLOB

仅搜索基名称与GLOB匹配的文件(使用通配符 如--exclude)中所述进行匹配

也将搜索子字符串。grep搜索模式-您不需要这些星号(或我的预编辑答案中的点星号)


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

您应该尝试grep accepting:

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

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

grep -rlP "\b(test)\b" /path
当然也有局限性。例如,使用此方法进行多行搜索可能会很困难

grep -irlP ".*test.*" /path
grep -rlP "\b(test)\b" /path