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

NSH*_*NSH 5 command-line bash

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

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

我正在尝试使用egrep.

Zan*_*nna 5

你可以用

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

笔记

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