如何在目录中搜索文件内容以找到特定模式,然后将文件名返回(重定向)到另一个文件?

如何在目录中搜索文件内容以找到特定模式,然后将文件名返回(重定向)到另一个文件?

我想使用 bash 命令执行以下任务:

查找/etc包含字符串“10.17.1”或“130.236.189”的所有文件,并将文件名输出到另一个文件。

我正在尝试使用 来做到这一点egrep

答案1

你可以使用

sudo egrep -rl '(10\.17\.1|130\.236\.189)' /etc > newfile

笔记

  • 您需要sudo查看这里的一些文件。
  • -l仅打印文件名,不打印匹配的行
  • -r递归搜索。如果只想检查顶层文件,请删除
  • \.匹配文字.;不转义,.匹配任何字符。
  • a|b匹配ab。此示例中的括号是多余的,因为正则表达式中没有其他内容。'foo|bar'匹配foobar和 一样好'(foo|bar)'。但我之所以包括它们,是因为我认为这是很好的做法:括号定义要开始/停止交替的区域,例如'foo bar|baz'匹配foo barbaz,而'foo (bar|baz)'匹配foo barfoo baz

相关内容