我有一个包含文本的文件:
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