Jak wyodrębnić zestaw plików zip z pliku zip

1

Czy istnieje polecenie wyodrębnienia zbioru plików zip w innym pliku zip i nie wyodrębnienia go? na przykład:

A.zip ma (B.zip, C.zip, c_directory, d.txt) Jak wyodrębnić B.zip i C.zip bez wyodrębniania katalogu c_directory ani d.txt?

Musimy porównać zawartość w plikach B.zip i C.zip i poszukać ich różnic, porównując ich rozmiary plików.

Dziękuje wszystkim.

chz
źródło

Odpowiedzi:

0

Według 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.

Innymi słowy, argumenty podane po nazwie archiwum są uważane za listę plików, które chcesz wyodrębnić:

$ unzip A.zip B.zip C.zip 

Jeśli chcesz porównać zawartość dwóch plików ZIP, możesz po prostu wyświetlić pliki w każdym archiwum i porównać listy. Opcje -lqq spowoduje unzip aby wyświetlić listę plików w archiwum:

 $ 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

Aby więc porównać dwa archiwa, wylistuj pliki w każdym, zapisz w pliku tekstowym i porównaj pliki tekstowe:

$ 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
źródło
terdon dzięki za odpowiedź. jaka jest standardowa praktyka porównywania plików w plikach zip; mamy problem z brakującymi plikami w nowszym pliku zip, ale nikt go nie złapał. Lubimy ustawiać sposób w skrypcie, aby chronić nas przed tym, co się powtórzy. Czy masz sugestię? Mile widziane
chz
@chz zobacz zaktualizowaną odpowiedź, po prostu wyświetl zawartość i porównaj je diff.
terdon
Cześć terdon Próbowałem zaakceptować twoją odpowiedź, ale nie mogłem jej zaktualizować z powodu niskiego wyniku; Dzięki za twoje odpowiedzi; Nadal mam inne pytanie, ale w innym czasie
chz
@chz nie krępuj się zadawać więcej pytań! Ponadto, BARDZO swobodnie nie przyjmuj ani nie głosuj na odpowiedź, jeśli ci nie pomogła. Mój komentarz do twojego innego pytania nie był skargą, ponieważ nie zaakceptowałeś moich odpowiedzi, ja tylko wyjaśniałem, jak działa ta strona. Ponadto zawsze powinieneś być w stanie zaakceptować odpowiedź na swoje pytanie, nie ma to nic wspólnego z reputacją. Widzieć tutaj . Kiedy jesteś nowym użytkownikiem, nie możesz go głosować, ale zawsze możesz zaakceptować.
terdon