Como extrair um conjunto de arquivos zip de um arquivo zip

1

Existe um comando para extrair um conjunto de arquivos zip dentro de outro arquivo zip e não extrair tudo isso? por exemplo:

A.zip tem (B.zip, C.zip, c_directory, d.txt) Como pode extrair B.zip e C.zip sem extrair c_directory nem d.txt?

Precisamos comparar o conteúdo em B.zip e C.zip e procurar por suas diferenças comparando o tamanho dos arquivos dentro deles.

Obrigado a todos.

chz
fonte

Respostas:

0

De acordo com man unzip:

NAME
   unzip  -  list, test and extract compressed files in a ZIP ar‐
   chive

SYNOPSIS
   unzip   [-Z]   [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]]   file[.zip]
   [file(s) ...]  [-x xfile(s) ...] [-d exdir]


  [file(s)]
          An optional list of archive members  to  be  processed,
          separated  by  spaces.   (VMS  versions  compiled  with
          VMSCLI defined must delimit files with commas  instead.
          See  -v  in OPTIONS below.)  Regular expressions (wild‐
          cards) may be  used  to  match  multiple  members;  see
          above.   Again, be sure to quote expressions that would
          otherwise be expanded or modified by the operating sys‐
          tem.

Em outras palavras, os argumentos dados após o nome do arquivo são considerados como a lista de arquivos que você deseja extrair:

$ unzip A.zip B.zip C.zip 

Se você quiser comparar conteúdo de dois arquivos zip, você poderia apenas listar os arquivos em cada arquivo e comparar as listas. As opções -lqq vai causar unzip para listar os arquivos em um arquivo:

 $ unzip -lqq A.zip 
  424  2013-03-24 04:39   B.zip
  424  2013-03-24 04:39   C.zip
  424  2013-03-24 04:39   d.txt

Assim, para comparar dois arquivos, liste os arquivos em cada um, salve em um arquivo de texto e compare os arquivos de texto:

$ unzip -lqq A.zip | sort > A_files.txt
$ unzip -lqq D.zip | sort > D_files.txt
$ diff A_files.txt D_files.txt | grep '<\|>'
<         0  2013-03-24 04:57   only_in_A.txt
>         0  2013-03-24 04:57   only_in_D.txt
terdon
fonte
Terdon obrigado por responder. qual é a prática padrão na comparação de arquivos em arquivos zip; Temos um problema em que havia alguns arquivos ausentes em um arquivo zip mais novo, mas ninguém o pegou. Nós gostamos de criar um caminho no script para nos proteger de que isso aconteça novamente. Você tem uma sugestão ? Muito apreciado
chz
@chz ver resposta atualizada, basta listar o conteúdo e compará-los usando diff.
terdon
Oi Terdon, tentei aceitar sua resposta, mas não consegui atualizá-la por causa da minha baixa pontuação; Obrigado por suas respostas lá; Eu ainda outra pergunta, mas eu vou em outro momento
chz
@chz sinta-se livre para fazer mais perguntas! Além disso, sinta-se MUITO livre para não aceitar ou votar positivamente em uma resposta, caso ela não tenha ajudado você. Meu comentário sobre sua outra pergunta não foi uma reclamação porque você não aceitou minhas respostas, eu estava apenas explicando como este site funciona. Além disso, você deve sempre ser capaz de aceitar uma resposta à sua pergunta, não tem nada a ver com a reputação. Vejo Aqui . Quando você é um novo usuário, você não pode fazer o upvote, mas pode sempre aceitar.
terdon