如何从 zip 文件中提取一组 zip 文件

如何从 zip 文件中提取一组 zip 文件

是否有命令可以提取另一个 zip 文件内的一组 zip 文件而不是全部提取?例如:

A.zip 有(B.zip、C.zip、c_directory、d.txt)如何在不提取 c_directory 或 d.txt 的情况下提取 B.zip 和 C.zip?

我们需要比较B.zip和C.zip中的内容,通过比较它们内部文件的大小来寻找它们的差异。

谢谢大家。

答案1

根据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.

换句话说,档案名称后给出的参数被视为要提取的文件列表:

$ unzip A.zip B.zip C.zip 

如果你想比较内容两个 zip 文件,您可以列出每个存档中的文件并比较列表。选项-lqq将导致unzip列出存档中的文件:

 $ 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

因此,要比较两个档案,请列出每个档案中的文件,保存到文本文件中,然后比较文本文件:

$ 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

相关内容