要在我可以使用的所有子文件夹中grep一些字符串:
grep -rl "test" /path
我想grep一些特定的字符串,假设字符串的第一部分和第二部分可能不同(具有不同的开始和结束)并且不区分大小写。 我试着这样做,但它不起作用:
grep -rli "*test*" /path
你能告诉我怎么做吗?
要清楚我想找到包含子文件夹的所有文件(grep),其中有特定的字符串,例如:
"*test*"
答案 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选项。