0

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

od -t uL * | grep 0000

这显示了我所追求的匹配项,但没有显示文件名,如果我使用grep标志,-H我只会得到“标准输入”:

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

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

4

2 回答 2

3

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

for f in *; do
    od -t uL "$f" | awk -v f="$f" '/0000/ {print f":"$0}'
done
于 2017-06-15T15:36:19.610 回答
0

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

于 2017-06-15T15:34:24.310 回答