2011-04-15 33 views
2

我在查找文件夹中将包含字符串abc-def的文件。grep搜索中间有连字符的字符串

我正在使用grep -l -r abc-def *,但我不确定这是否正确的方法(使用此命令时没有找到文件,但也许它只是表示没有文件包含该字符串)。我也试过grep -l -r 'abc-def' *(找到的文件,但是当我手动查找字符串时,他们不在那里,只有字符串的各个部分,即abc和def)。由于模式不以连字符开头,所以在这里不起作用。

grep搜索中间有连字符的字符串的正确方法是什么?

+0

由于连字符不是shell或grep的特殊字符(除了字符类内部),它只是表示没有文件包含字符串。 – Neil 2011-04-15 19:49:35

+0

@尼尔:好吧,非常感谢(我只是需要确保):) – quarkdown27 2011-04-15 20:00:28

回答

0

尝试grep -r abc-def先看看哪条线路相匹配。 grep -r abc-def *grep -r 'abc-def' *应该真的产生相同的结果。

fgrep(f是'固定字符串')在这里没有必要。

+0

只是为了使这个答案更完整,请参考上面的尼尔的评论:连字符不是一个特殊的字符,所以它应该没关系,如果它在字符串的中间 – quarkdown27 2011-04-15 20:05:30

1

这应该工作:

fgrep -r -l 'abc-def' .