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

时间:2015-11-19 08:51:39

标签: linux grep find

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

grep -rl "test" /path

我想grep一些特定的字符串,假设字符串的第一部分和第二部分可能不同(具有不同的开始和结束)并且不区分大小写。 我试着这样做,但它不起作用:

grep -rli "*test*" /path

你能告诉我怎么做吗?

要清楚我想找到包含子文件夹的所有文件(grep),其中有特定的字符串,例如:

"*test*"

3 个答案:

答案 0 :(得分:1)

你应该尝试grep接受perl regex

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

.*表示匹配(零次或多次)换行符之外的任何字符。有关元字符here

的更多信息

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

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

当然有一些限制。例如,使用此方法进行多行搜索可能很困难。

答案 1 :(得分:0)

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

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

来自grep的手册页

  

<强> - 包括= GLOB

     

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

答案 2 :(得分:0)

grep -ilr "string" path/to/subdir

也会搜索子字符串。 grep搜索模式 - 你不需要那些星号(或者在编辑前的答案中使用点星号)。

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