Como listar arquivos em um zip sem informações adicionais na linha de comando

37

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.

рüффп
fonte
A resposta aceita é muito melhor que isso; mas quero ressaltar que qualquer coisa com múltiplos greppode 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).
Tripleee
Sim, concordo plenamente, é exatamente por isso que faço essa pergunta específica: ter uma solução melhor e viável.
рüффп

Respostas:

55
zipinfo -1 file.zip

Ou:

unzip -Z1 file.zip

Listaria apenas os arquivos.

Se você ainda deseja informações adicionais para cada nome de arquivo, pode:

unzip -Zl file.zip | sed '1,2d;$d'

Ou:

unzip -l file.zip | sed '1,3d;$d' | sed '$d'

Ou (assumindo o GNU head):

unzip -l file.zip | tail -n +4 | head -n -2
Stéphane Chazelas
fonte
obrigado poderoso sed ... exatamente o que eu queria; Também a ferramenta zipinfo é interessante, eu não sabia.
рüффп
Existe uma maneira de ignorar diretórios? unzip -Z1 zipfile.zipproduzirá: directory / e directory / file.extension (Nota: os nomes dos diretórios com. é provável, portanto, adicionar um | grep .não funciona)
Matt