来自多个 gz 文件的第一行

First line from multiple gz files

我知道有多种方法可以从gz文件中读取第一行,例如:

gzcat abc.gz | head -n 1

gunzip -c abc.gz | awk 'NR==1 {print; exit}'

但是,我有一个包含很多很多 gz 文件的目录,我想为每个文件 (*.gz) 获取 header,旁边有文件名,例如:

abc.gz: This is the first line of abc.txt def.gz: This is the first line of def.txt

有什么快速的方法吗?

[编辑:]感谢您的帮助!答案很接近,但我只想要每个第一行输出旁边的文件名,这样我就知道哪一行对应哪个文件。

对于 "GNU" find 使用:

find . -name "*.gz" -exec sh -c "echo -n '{}: '; gzcat {}|head -1" \;