Bash 多个gz文件的第一行

Bash 多个gz文件的第一行,bash,gunzip,zcat,Bash,Gunzip,Zcat,我知道从gz文件中读取第一行有多种方法,例如: gzcat abc.gz | head -n 1 或 但是,我有一个包含许多gz文件的目录,我想获取每个文件(*.gz)的标题,其旁边有文件名,如: abc.gz:这是abc.txt的第一行 def.gz:这是def.txt的第一行 有没有快速的方法可以做到这一点 [编辑:]感谢您的帮助!答案很接近,但我只想在每个第一行输出旁边显示文件名,这样我就知道哪一行与哪一个文件相匹配。对于“GNU”查找使用: find . -name "*.gz" -e

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

gzcat abc.gz | head -n 1

但是,我有一个包含许多gz文件的目录,我想获取每个文件(*.gz)的标题,其旁边有文件名,如:

abc.gz:这是abc.txt的第一行
def.gz:这是def.txt的第一行

有没有快速的方法可以做到这一点

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

对于“GNU”
查找
使用:

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

找到-名称“*.gz”-execbash-c“gzcat{}head-1”\;gz:firstcol | secondcol | thirdcol def.gz:something | else | hereNice,但为什么要用双引号呢?而bash的要点是什么,而sh具有实现这一点所需的功能,并且速度更快?最后,为什么不使用bulk exec生成更少的shell实例?双引号可以增加空间,如OP所需的输出所示。但是,单引号更安全,在这种情况下更方便
find . -name "*.gz" -exec sh -c "echo -n '{}: '; gzcat {}|head -1" \;