如何在 Linux 中查找包含两个字符串的文件?

如何在 Linux 中查找包含两个字符串的文件?

可能重复:
如何结合 find 和 grep 进行复杂搜索?(GNU/linux、find、grep)

我有一个包含文本的文件:

PADLST20120907:D:05B:UN:IBTA+TK4 17 JFL01+01'BGM+250+C'RFF+TN:TK4

我想在 Linux 中使用这两个字符串找到此文件:“JFL”和“20120907”。如上所示,该文件包含“JFL”和“20120907”。我应该在命令行中写什么?字符串可能在同一行,也可能不在同一行。

我希望在输出中看到带完整路径的文件名。我不想看到错误消息或权限被拒绝的警告。我想在我所在的目录中递归搜索,或者我想指定一个路径。

问候

答案1

一个简单的 bash 循环就可以完成你需要的事情:

$ grep -rl JFL . | while read n; do grep -l 20120907 $n; done

如果文件名包含空格,请执行以下操作:

$ grep -rl JFL . | while read n; do grep -l 20120907 "$n"; done

要抑制错误消息,请重定向标准误差

$ grep -rl JFL . 2>/de/null | while read n; do grep -l 20120907 "$n"; done

相关内容