Na minha linha de comando bash, quando uso, unzip -l test.zip
obtenho 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.
Tentei fazer uma filtragem usando grep assim:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
Mas é longo e sujeito a erros (por exemplo, um nome de arquivo Arquivo nesta lista será eliminado)
Existe alguma outra opção com unzip -l (verifiquei a página de manual de descompactação 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.
Responder1
zipinfo -1 file.zip
Ou:
unzip -Z1 file.zip
Listaria apenas os arquivos.
Se você ainda quiser informações extras para cada nome de arquivo, você pode fazer:
unzip -Zl file.zip | sed '1,2d;$d'
Ou:
unzip -l file.zip | sed '1,3d;$d' | sed '$d'
Ou (assumindo GNU head
):
unzip -l file.zip | tail -n +4 | head -n -2
Ou você pode usar libarchive
's bsdtar
:
$ bsdtar tf test.zip
file1.txt
file2.txt
file3.txt
$ bsdtar tvf test.zip
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file1.txt
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file2.txt
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file3.txt
$ bsdtar tvvf test.zip
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file1.txt
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file2.txt
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file3.txt
Archive Format: ZIP 2.0 (deflation), Compression: none