grep 通过 od 转换内容并显示原始文件位置

grep transformed content via od and show original file location

我正在转换一些二进制文件并在其中获取一个值:

od -t uL * | grep 0000

这显示了我之后的匹配项,但没有显示文件名,如果我使用 grep-H 标志,我只会得到 'standard input':

od -t uL * | grep -H 0000
(standard input):xxx 0000
(standard input):yyy 0000

如何获取返回的原始文件名?

这样不行。 grep 命令在标准输入流上工作,而不是在文件上工作。如果 grep 命令的退出代码为零(找到选定的行),您可以在 shell 中执行 for 循环,回显文件名。

该信息在 grep 是 运行 时丢失,因此您可能必须自己循环遍历文件

for f in *; do
    od -t uL "$f" | awk -v f="$f" '/0000/ {print f":"[=10=]}'
done