1

我在使用 grep 正确(且安全地)执行正确的正则表达式搜索时遇到问题。我似乎能够做我想做的事ag

我想用简单的英语做什么:

在我的当前目录(递归?)中搜索包含“嵌套”和“合并”这两个词的文件

使用 ag 成功尝试:

$ ag --depth=2 -l "nested.*merge|merge.*nested" .
   scratch.md
   scratch.rb

使用 grep 尝试失败:

$ grep -elr 'nested.*merge|merge.*nested' .
   grep: nested.*merge|merge.*nested: No such file or directory
   grep: .: Is a directory

我错过了什么?另外,这两种方法都可以改进吗?

谢谢!

4

2 回答 2

3

你可能不想-E-e或者只是egrep

Aman grep会让你明白为什么-e给你这个错误。

于 2016-12-19T02:05:56.830 回答
0

您可以使用grep -lr 'nested.*merge\|merge.*nested'grep -Elr 'nested.*merge|merge.*nested'为您的情况。
此外,对于后一种,Emean 使用ERE正则表达式语法,因为默认grep会使用where将匹配 character和mean 。 有关 and 的更多详细信息,您可以阅读这篇文章BRE||\|or
EREBRE

于 2016-12-19T07:13:27.747 回答