Não há um comando "fácil" porque o unzip não oferece essa funcionalidade nativamente. Você deve pedir para extrair alguns ou todos os arquivos e processá-los você mesmo. Aqui está outra maneira:
zipinfo -1 Ten.zip | while IFS= read -r filename
do
unzip -p Ten.zip "$filename" | sed 2q
done
A diferença aqui é usar zipinfo
para listar o conteúdo do arquivo, um por linha; nós então lemos os nomes dos arquivos linha por linha e pedimos que unzip
extraia o arquivo para a tela (com -p
para que o nome do arquivo não seja impresso) e então canalize para sed
imprime (por padrão), parando na linha 2.
Isso pode falhar se você tiver arquivos arquivados com novas linhas em seus nomes; você não faria isso, porque descompactar o nome do arquivo na extração:
$ touch file$'\n'name
$ zip foo.zip file*name
$ rm file*name
$ zipinfo -1 foo.zip
file^Jname
$ unzip foo.zip
Archive: foo.zip
extracting: filename
$ ls -lrt
...
filename