Na minha linha de comando do bash, quando eu uso unzip -l test.zip
, recebo a saída assim:
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
810000 05-07-2014 15:09 file1.txt
810000 05-07-2014 15:09 file2.txt
810000 05-07-2014 15:09 file3.txt
--------- -------
2430000 3 files
Mas estou interessado apenas nas linhas que contêm os detalhes do arquivo.
Eu tentei fazer a filtragem usando grep assim:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
Mas é longo e propenso a erros (por exemplo, um nome de arquivo arquivado nesta lista será descartado)
Há outras opções com descompacte -l (verifiquei a página de manual descompactar e não encontrei nenhuma) ou outra ferramenta para fazer isso?
É importante para mim não descompactar o arquivo, mas apenas ver quais arquivos estão dentro.
grep
pode ser refatorada para um script do Awk, geralmente com muito mais precisão.awk 'NR >3 { if (/^ *---/) exit 0; print }'
apararia as três primeiras linhas, bem como o rodapé, e também estaria ao alcance de extrair facilmente apenas o nome do arquivo (dica:)print substr($0, 29)
.