Leia o conteúdo de um arquivo compactado sem extração?

153

Como posso ler o conteúdo de um arquivo específico em um arquivo morto sem extrair o arquivo .zip nele? Estou usando a linha de comando do Linux.

Uma pergunta anterior pergunta sobre a exibição do diretório do arquivo morto. Mas, para mim, não basta ver apenas uma lista dos arquivos no arquivo morto, preciso ver o conteúdo de um arquivo no arquivo morto.

Shrikanth
fonte
@ fixer1234 (e outros): A pergunta vinculada pergunta: “Como posso ver os arquivos em um arquivo ZIP?” AFAIC, é a mesma pergunta que “Como posso ver o conteúdo de um arquivo ...?” É lamentável que muitos dos as pessoas que responderam a essa pergunta o interpretaram como “Como posso visualizar o diretório do arquivo?” No entanto, a resposta de Gilles (naturalmente) e a resposta de Rajasekhar Tolety (aparentemente) a essa pergunta fornecem respostas para essa pergunta.
Scott
1
@ Scott, talvez devêssemos descobrir como mesclar as duas perguntas para que ambos os tópicos sejam abordados em uma, ou reorientar a outra para que fique claramente sobre o diretório e, em seguida, mova as respostas entre os dois lugares para corresponder às perguntas. No momento, ambos são uma bagunça.
precisa saber é o seguinte
@ fixer1234: Eu concordo, até certo ponto. Os moderadores estão sempre nos dizendo que duplicatas são uma coisa boa, porque fornecem uma maior superfície de exposição aos mecanismos de pesquisa (ou seja, mais chances de uma pesquisa encontrar uma das perguntas). Mas existe o problema: se um usuário encontrar uma das perguntas e a ligação não for óbvia (e ninguém examinar as listas de perguntas "Vinculadas" e "Relacionadas" - pelo menos não seguidores aleatórios dos resultados de pesquisa), então o O usuário encontrou apenas uma fração das respostas. DavidPostill votou finalmente para reabrir esta questão; talvez você deva falar com ele.
Scott
@ Scott - Dado que o autor da pergunta marcou a resposta “Como posso visualizar o diretório do arquivo?” Como aceito, tenho que pensar que essa foi provavelmente a intenção da pergunta. Infelizmente, é redigido de forma ambígua de modo que possa significar qualquer interpretação.
23717 Justin M.

Respostas:

198

unzip -l archive.zip lista o conteúdo de um arquivo ZIP para garantir que seu arquivo esteja dentro.

Use a -copção para gravar o conteúdo dos arquivos nomeados no stdout (tela) sem precisar descompactar o arquivo inteiro.

unzip -c archive.zip file1.txt file2.txt | less

Para esse tipo de operação, sempre canalizo a saída less, caso contrário, o arquivo inteiro será exibido na tela antes que você possa lê-lo.

O BTW zcat é ótimo para exibir o conteúdo de arquivos .gz sem precisar descompactá-los primeiro.

danielcraigie
fonte
8
Pelo menos no Ubuntu, menos está de alguma forma configurado para fazer isso por padrão - então, less archive.zipna verdade, mostra a lista de arquivos.
aviv
1
bzcat para visualizar o conteúdo de arquivos bz2 sem ter que descompactar-los primeiro ...
Justin E
3
descompacte -c também mostra o nome do arquivo e algumas mensagens extras (enviando-as para o stdout). O uso de -p envia apenas o arquivo no formato binário. Isso é mais útil para tubulação
Juan Calero
Com seu $LESSOPENconjunto para lesspipe, você pode apenas less foo.gzvisualizar o conteúdo descompactado. (@aviv: esta é a mesma coisa que permite que less foo.zipa tubulação unzip -l foo.zipem si).
Peter Cordes
unzip -c archive.zip '*' | lessfaz o que eu estava procurando: identifique o conteúdo do arquivo zip.
Peter Cordes
4

zipinfoé outra ferramenta que você pode usar, útil se você estiver em um sistema bloqueado onde unzipnão é permitido.

Nickolai
fonte
4

Se você está olhando apenas para ver imagens dentro dos arquivos, você pode usar Comix ou mais recente MComix para ver imagens dentro .zip, .rar, .cbr, e .cbzarquivos sem extração.

Kokizzu
fonte
2

Inicie Emacsna linha de comando e abra seus arquivos zip com o Zip-Archivemodo Sem qualquer ajuste do Emacs / elisp (os novos usuários geralmente temem), você verá detalhes do arquivo como zipinfo: modos, duração, data, hora

Em seguida, você poderá abrir arquivos em buffers e até salvar suas alterações no arquivo morto, com atalhos padrão:

  • Digite um nome de arquivo na lista para abri-lo
  • Edite e salve com Ctrl-x Ctrl-s
  • Mate o buffer Ctrl-kpara voltar ao buffer de arquivamento e continuar

Quando Zip-Archiveestiver no buffer, use Ctrl-h mpara obter todos os atalhos disponíveis no Modo de Exibição de Ajuda.

Espero que isso possa levá-lo a descobrir recursos impressionantes do Emacs

Yves Martin
fonte
1

Você pode usar vimpara listar o conteúdo do arquivo zip/ rar/ tar:

vim archive.zip

BTW: aqui está a mesma pergunta.

patryk.beza
fonte
0

Eu descobri less archive.zipser a maneira mais fácil de fazer isso.

RobertMyles
fonte
2
menos archive.zip não mostra o conteúdo de um arquivo compactado, mostra apenas o conteúdo de um arquivo compactado .
Karel
Obrigado pelo esclarecimento, @karel
RobertMyles
Eu acho que o que você realmente está tentando fazer seria o mesmo que a resposta de danielcraigie.
Karel
-1

Se o arquivo estiver incluído no arquivo zip, você precisará extrair apenas esse arquivo do arquivo morto (pode depender do tipo de arquivo morto, alguns arquivos não podem extrair arquivos separadamente)

blogueiro
fonte
Sim, mas você pode extrair para stdout e canalizar diretamente para um pager.
Peter Cordes
Esta não é uma resposta técnica, é mais provável de um político ou de um advogado. Por favor seja mais específico! (mostre o comando por exemplo)
Hola Soy Edu Feliz Navidad