Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, February 10, 2021
 
 

zipinfo (1)

Name

zipinfo - show detailed information about a ZIP archive

Synopsis

zipinfo [-12smlvhMtTz] file[.zip] [member ...] [-x member ...]

unzip -Z [-12smlvhMtTz] file[.zip] [member ...] [-x member ...]

Description

ZIPINFO(1)                  General Commands Manual                 ZIPINFO(1)



NAME
       zipinfo - show detailed information about a ZIP archive

SYNOPSIS
       zipinfo [-12smlvhMtTz] file[.zip] [member ...] [-x member ...]

       unzip -Z [-12smlvhMtTz] file[.zip] [member ...] [-x member ...]

DESCRIPTION
       ZipInfo  reports  detailed information about a ZIP archive and its mem-
       bers.  This information may include file access  permissions,  compres-
       sion  method,  encryption method, version and operating system (or file
       system) of the archive-creating program, and so on.  The default behav-
       ior (with no options) is to show a single-line entry for each member in
       the archive, with a header and a trailer providing summary  information
       for the entire archive.  The format is a cross between Unix "ls -l" and
       "unzip -lv" output.  See DETAILED DESCRIPTION below.   ZipInfo  is  the
       same  program as UnZip.  (On Unix, "zipinfo" may be a link to "unzip".)
       However, ZipInfo support may have been disabled when UnZip was built.

ARGUMENTS
       file[.zip]
              File path/name of a ZIP archive.  A wildcard name may be  speci-
              fied  (only  in the filename part of the file specification, not
              in the directory part).  If a wildcard is used, then each match-
              ing  archive  file  is  processed  in an order determined by the
              operating system (or file  system).   Wildcard  expressions  are
              similar  to  those  supported  (for "globbing") in commonly used
              Unix shells (csh, ksh, sh, and so on) and may contain:

              *      Matches a sequence of 0 or more characters.

              ?      Matches exactly 1 character.

              [...]  Matches any single character found inside  the  brackets.
                     Ranges  are specified by a beginning character, a hyphen,
                     and an ending character.  If an exclamation  point  ("!")
                     or a caret ("^") follows the left bracket, then the range
                     of characters within the brackets is complemented.   That
                     is, anything except the characters inside the brackets is
                     considered a match.  To specify a literal  left  bracket,
                     use the three-character sequence "[[]".

              Be sure to escape or quote any character(s) that might otherwise
              be interpreted or modified by the operating system, particularly
              Unix  shells.  If no wildcard matches are found, then the speci-
              fication is assumed to be a  literal  filename.   If  that  also
              fails,  then  the  suffix  ".zip" and/or ".ZIP" is appended, and
              that is tried.  (For this reason,  if  a  non-existent  file  is
              specified,  then  the  resulting error message may mention these
              other names with their ".zip" or ".ZIP" suffixes.)

              Note that a ".zip" or ".ZIP" name ending on an archive is merely
              a convention, not a requirement.  For example, a self-extracting
              ZIP archive named "fred" or "fred.exe" could be processed as  if
              it  were  an ordinary archive; just specify the actual file name
              with its actual name ending (if any), whatever that may be.

       member ...
              An optional list of archive members to be  processed,  separated
              by  spaces.   If  no  member list is specified, then all archive
              members are processed.  Wildcard patterns (like those  used  for
              an  archive  file  name on Unix, described above) may be used to
              match multiple members.  Again, be  sure  to  quote  expressions
              that  would  otherwise  be expanded or modified by the operating
              system or shell.

              On Mac OS X systems, file attributes, a resource fork, and simi-
              lar  data may be stored in a separate AppleDouble archive member
              which has a "._" name prefix.  In some  cases,  UnZip  automati-
              cally  handles  these  AppleDouble archive members when a normal
              member pattern is specified, but with  ZipInfo,  the  user  must
              specify  patterns which explicitly include any desired AppleDou-
              ble archive members.

              On VMS systems, the wildcard rules used for archive members  are
              the  same  as on Unix systems.  VMS wildcard rules are used only
              for archive file specifications, not  for  archive  member  pat-
              terns.

OPTIONS (Primary Format)
       -1
       --names-only
              Primary  Format.   Show  member  names only, one per line.  This
              option excludes all others, and  the  report  does  not  include
              headers, trailers, or archive comments.  This format may be use-
              ful with Unix shell (or other) scripts.

       -2
       --names-mostly
              Primary Format.  Show member names only, one per line  (as  with
              "-1"),  but  allow headers (-h), trailers (-t), and archive com-
              ments (-z), if requested explicitly.

       -s
       --short-list
              Primary Format.  Show member info in short Unix "ls -l"  format.
              This is the default behavior, unless -h or -t is specified.

       -m
       --medium-list
              Primary  Format.  Show member info in medium-length Unix "ls -l"
              format.  Like the -s format, except that the compression factor,
              expressed as a percentage, is also included.

       -l
       --long-list
              Primary  Format.   Show member info in long Unix "ls -l" format.
              Like the -m format, except that the compressed size  (in  bytes)
              is printed instead of the compression ratio.

       -v
       --verbose
              Primary  Format.  Show very detailed member info in a multi-line
              format.

              The verbose report  is  mostly  self-explanatory,  but  it  does
              assume  some  familiarity  with the ZIP archive format.  It also
              includes the archive comment, if any.  Extra fields in the  cen-
              tral  directory  are  broken  dowm  into  subfields,  with brief
              descriptions of recognized subfields (or  abbreviated  dumps  of
              unrecognized subfields).

OPTIONS (Ordinary)
       -C
       --ignore-case    ([CMS, MVS] --CMS-MVS-lower)
              Use  case-insensitive name matching for names in the member list
              and the  -x  excluded-member  list  on  the  command  line.   By
              default, case-sensitive matching is done.  For example, specify-
              ing "makefile" on the command line will match only "makefile" in
              the archive, not "Makefile" or "MAKEFILE".  On many systems, the
              local file system is case-insensitive, so case-insensitive  name
              matching would be more natural.  With -C, "makefile" would match
              "makefile", "Makefile", or "MAKEFILE".

       -h
       --header
              Include a header in the report, showing the  archive  name,  the
              archive  size  (in  bytes), and the number of members in the ar-
              chive.

              For the Unix-format reports (options -l, -m, -s), the header  is
              included by default, if no archive members are specified.  If -h
              is specified alone, that is,  without  one  of  the  Unix-format
              options,  and  without a member list, then only the header lines
              will be put out.

       -M    ([CMS,MVS] Or: -m)
       --more
              Pipe all output through an internal pager similar  to  the  Unix
              more(1)  command.   At the end of a screenful of output, Zipinfo
              pauses with a "--More--"  prompt;  the  next  screenful  may  be
              viewed  by  pressing  the  Enter  (Return) key or the space bar.
              ZipInfo can be terminated by pressing the "q" key, or,  on  some
              systems, the Enter/Return key.  Unlike Unix more(1), there is no
              forward-searching or editing capability.  Also, ZipInfo  doesn't
              notice if long lines wrap at the edge of the screen, effectively
              resulting in the printing of two or more lines and  the  likeli-
              hood that some text will scroll off the top of the screen before
              being viewed.  If the actual number of lines on the  screen  can
              not be determined, 24 lines will be assumed.

       -mc
       --member-counts
              Control  inclusion  of  separate  member counts for directories,
              files, and (if symlinks are supported) links, after  the  totals
              summary  at  the  end  of  the  report.   By  default,  they are
              included.  Use -mc- or --member-counts- to suppress  them.   See
              also /TOTALS.

       -T
       --decimal-time
              Show  the  file  date-times  in a sortable, all-numeric, "YYYYM-
              MDD.hhmmss" format.  The default date format is an alpha-numeric
              "YY-Mmm-DD hh:mm".  For example ("-s", "-s -T"):


       -rw-a--     3.1 fat   211916 tx defX 10-Jun-18 00:27 zip31c/zip.c
       -rw-a--     3.1 fat   211916 tx defX 20100618.002703 zip31c/zip.c

       -t
       --totals
              Include  a  totals summary at the end of the report, showing the
              number of members in the report, the sum of  their  uncompressed
              sizes,  the  sum  of their compressed sizes, and the compression
              factor as a percentage.

              For the Unix-format reports (options -l,  -m,  -s),  the  totals
              summary is included by default, if no archive members are speci-
              fied.  If -t is specified alone, that is,  without  one  of  the
              Unix-format  options,  and  without a member list, then only the
              totals summary trailer lines will be put out.

              The total "bytes compressed" reported includes only  the  actual
              data,  not the ZIP archive meta-data, so the size of the archive
              will always be greater than this value.

              See also -mc.

       -U
       --unicode
              [UNICODE_SUPPORT] Control UTF-8 handling.  When  UNICODE_SUPPORT
              is  available, -U forces ZipInfo to escape all non-ASCII charac-
              ters from UTF-8 coded filenames as "#Uxxxx" (for  UCS-2  charac-
              ters,  or  "#Lxxxxxx"  for Unicode codepoints needing 3 octets).
              This option is mainly provided for debugging  purpose  when  the
              fairly  new  UTF-8  support  is  suspected of damaging extracted
              filenames.

              -UU disables the recognition of UTF-8  encoded  filenames.   The
              handling  of  filename  codings within ZipInfo falls back to the
              behavior of pre-Unicode versions.

       --version
       When used alone, display the program version, and usage.  See also
              Primary Format option -v.

              Currently, --version is implemented as a synonym  for  -v/--ver-
              bose,  so,  for  proper  operation, it must be specified with no
              other options.

       -vq
       --quick-version
              Primary  mode.   Display  a  brief  (one-line)  program  version
              report.

       -W
       --wild-no-span
              [WILD_STOP_AT_DIR]  (Valid  when  the  program  was  built  with
              WILD_STOP_AT_DIR enabled.)  Modify the pattern-matching behavior
              so  that  both  "?"  (single-character wildcard) and "*" (multi-
              character wildcard) do not match the directory separator charac-
              ter "/".  (The two-character sequence "**" acts as a multi-char-
              acter wildcard that includes  the  directory  separator  in  its
              matched characters.)  For example, with "-W":

               "*.c" matches "foo.c" but not "mydir/foo.c"
               "**.c" matches both "foo.c" and "mydir/foo.c"
               "*/*.c" matches "bar/foo.c" but not "baz/bar/foo.c"
               "??*/*" matches "ab/foo" and "abc/foo"
                       but not "a/foo" or "a/b/foo"

              This  modified  behavior  is  equivalent to the pattern matching
              style used by the shells of some of UnZip's supported target OSs
              (one  example  is Acorn RISC OS).  This option may not be avail-
              able on systems where the Zip archive's internal directory sepa-
              rator  character  "/"  is allowed as regular character in native
              operating system filenames. (Currently, UnZip uses the same pat-
              tern matching rules for both wildcard archive file name specifi-
              cations and archive member selection  patterns  on  most  system
              types.   For systems allowing "/" as regular filename character,
              the -W option would not work as expected on a wildcard file name
              specification.)

       -x member ...
       --exclude member ...
              An optional list of archive members to be excluded from process-
              ing.  Because wildcard characters normally match  "/"  directory
              separators  (for  exceptions see the option -W), this option may
              be used to exclude any files that are  in  subdirectories.   For
              example,  "zipinfo foo *.[ch] -x */*"  would  report  on  all  C
              source files (*,c, *.h) in the main directory, but none  in  any
              subdirectories.   Without  the  -x option, all C source files in
              all directories within the archive  would  be  included  in  the
              report.

              When the program sees -x (--exclude) on a command line, it stops
              scanning for options, and treats every succeeding item as an ar-
              chive  member name.  To avoid confusion between member names and
              command options, it's simplest to specify -x (--exclude) and its
              member list as the last items on a command line.  Alternatively,
              the special name "@" can be used to terminate  the  member  list
              (and  cause  the  program to resume scanning for options).  That
              is, the following two commands are equivalent:
                        zipinfo fred.zip -2 -t -x file1 file2 file3
                        zipinfo fred.zip -x file1 file2 file3 @ -2 -t

       -z
       --zipfile-comment
              Include the archive comments (if any) in the report.

DETAILED DESCRIPTION
       ZipInfo has three basic report formats, providing different degrees  of
       detail  in  the  information  about the members of an archive: a simple
       list of names (-1, -2), a Unix ls-style listing (-l,  -m,  -s),  and  a
       very  detailed  analysis  (-v).   Some of the information, such as file
       sizes, is easy to interpret.  Some of the information  involves  fairly
       obscure  details  of  ZIP  archive structure.  ZIP archive structure is
       documented in the PKWARE Inc. APPNOTE.TXT:  http://www.pkware.com/docu-
       ments/casestudies/APPNOTE.TXT

       The table below shows some typical -l report entries:

   Perm/Prot  Zver Ofs UncoSize At CompSize Cmth  ModDate  Mtime Name
   ----------+----+---+--------+--+--------+----+---------------+--------------
   -rw-a--     3.1 fat   211916 tx    53467 defX 10-Jun-18 00:27 zip31c/zip.c
   -rwxr-x---  3.1 unx      709 Tx      311 aesw 11-Aug-21 22:20 endian.c
   RWED,RE,    3.1 vms     6656 bx     2295 defN 07-Aug-15 14:12 itrc/TST.EXE;8

       Field  1  (Perm/Prot)  shows the file permission/protection attributes,
       formatted according to the original operating  system  or  file  system
       where the archive was created.

       Field 2 (Zver) shows the (approximate) version of the Zip program which
       created the archive.

       Field 3 (Ofs) shows the original operating system where the archive was
       created, or the file system on which the member file was stored.

       Field 4 (UncoSize) shows the original, uncompressed file size.

       Field  5  (At) shows some archive member attributes, as detailed in the
       tables below.  The first character indicates whether a file was  binary
       or  text, and whether it was encrypted.  The second character indicates
       the presence of  a  data  descriptor  (sometimes  called  an  "extended
       header") and/or an extra field in the member data.

                         |   File Type     Extra Field |
             First char  | binary  text      yes   no  |  Second char
           --------------+-------+-----    ------+-----+--------------------
           Encrypted  no |   b      t         x     -  | no  Data Descriptor
                     yes |   B      T         X     l  | yes

              A  Data Descriptor holds CRC and size data at an alternate place
              in the archive (after processed member data instead of  before),
              and  is  normally  used when the archiving program can't seek in
              the output archive data/file.  An Extra Field can  hold  a  wide
              variety  of data, including 64-bit file sizes, many kinds of OS-
              specific attribute data, UTC times, and so on.

       Field 6 (CompSize) shows the compressed file size.  With -m, this field
       shows the compression fraction as a percentage.  With -s (the default),
       this field is omitted.  This compressed size value (unlike the  one  in
       an  "unzip -l"  report) includes all the overhead resulting from Tradi-
       tional encryption.

       Field 7 (Cmth) shows the compression method  used.   Note  that  AES_WG
       encryption  is  treated  as  a compression method here.  Not all of the
       methods shown in the table below are supported.  (Some are obsolete.)

    Num Abbr  Name, description
   ----+----+------------------------------------------------------------
     0  stor  Store (no compression)
     1  shrk  Shrink
     2  re:1  Reduce (factor 1)
     3  re:2  Reduce (factor 2)
     4  re:3  Reduce (factor 3)
     5  re:4  Reduce (factor 4)
     6  i#:#  Implode (dictonary_size:Shannon-Fano_trees)
     7  tokn  Tokenize
     8  def#  Deflate (N: normal, X: maximum, F: fast, S: super-fast)
     9  d64#  Deflate64 (N: normal, X: maximum, F: fast, S: super-fast)
    10  dcli  PKWARE Data Compression Library Imploding - IBM TERSE (old)
    12  bzp2  bzip2
    14  lzma  LZMA
    18  ters  IBM TERSE (new)
    19  lz77  IBM LZ77 z Architecture (PFS)
    96  jpeg  JPEG
    97  wavp  WavPack
    98  ppmd  PPMd version I, Rev 1
    99  aesw  AES_WG encryption

       Fields 8 and 9 (ModDate, Mtime) show the  file  modification  date-time
       (MS-DOS format, local time).

       Field 10 (Name) shows the file path/name.

ENVIRONMENT OPTIONS
       ZipInfo's  default  behavior  may  be  modified by placing command-line
       options in an environment variable.  This can be done with any  option,
       but it is probably most useful options like -T (decimal time format) or
       one of the non-default Unix format optiond (-l, -m).

              For ZipInfo ("unzip -Z"), the environment variable name is  ZIP-
              INFO,  except  on  VMS, where it's ZIPINFO_OPTS.  For similarity
              with Zip, if ZIPINFO (ZIPINFO_OPTS on VMS) is not defined,  then
              ZipInfo will use ZIPINFOOPT the same way.

              For  example,  to  make  the default format the long Unix format
              instead of the short Unix format, one could  use  commands  like
              the following:

         Unix Bourne (or similar) shell:
              ZIPINFO='-l'; export ZIPINFO

         Unix C shell:
              setenv ZIPINFO '-l'

         OS/2 or MS-DOS:
              set ZIPINFO="-l"

         VMS (with quotation to preserve lower case in DCL):
              define ZIPINFO_OPTS "-l"        ! Logical name, or
              ZIPINFO_OPTS = "-l"             ! DCL symbol.  (Either works.)

              Environment  options  are treated the same as any other command-
              line options, except that they are effectively the first options
              on the command line.  To override an environment option, one may
              use an explicit option to cancel or override it.   For  example,
              to  disable  the  totals  trailer line by default, one could use
              commands like the following:

         Unix Bourne (or similar) shell:
              ZIPINFO='-t-'; export ZIPINFO

         Unix C shell:
              setenv ZIPINFO '-t-'

         OS/2 or MS-DOS:
              set ZIPINFO="-t-"

         VMS (with quotation to preserve lower case in DCL):
              define ZIPINFO_OPTS "-t-"       ! Logical name, or
              ZIPINFO_OPTS = "-t-"            ! DCL symbol.  (Either works.)

              The examples show short (one-character) options, but long ("--")
              options are also allowed.

       The  timezone  variable (TZ) should be set according to the local time-
       zone in order for the Freshen (-f) and Update  (-u)  modes  to  operate
       correctly.   For  details, see -f.  This variable may also be necessary
       to get timestamps of extracted files to be set correctly.

              On Windows systems, UnZip gets the timezone  configuration  from
              the registry, assuming it is correctly set in the Control Panel.
              The TZ variable is ignored on these systems.

EXAMPLES
       To get a basic, short-format listing of the complete contents of a  ZIP
       archive zip31c.zip, with both header and totals lines, use only the ar-
       chive name as an argument to zipinfo:

           zipinfo zip31c.zip
           zipinfo zip31c

       To produce a basic, long-format listing (not verbose), including header
       and totals lines, use -l:

           zipinfo -l zip31c.zip

       To  list the complete contents of the archive without header and totals
       lines, either negate the -h and -t options or else specify the contents
       explicitly:

           zipinfo -h- -t- zip31c.zip
           zipinfo zip31c.zip "*"

       (Here,  the wildcard "*" is quoted to prevent a Unix shell from expand-
       ing (globbing) it.)

       To list information on a single archive member, in medium format, spec-
       ify the member name explicitly:

           zipinfo -m unzip60.zip "*/unshrink.c"

       When  any  member name is specified, the header and totals trailer are,
       by default, not included in the report, but  explicitly  specifying  -h
       and/or -t will restore them.  For example:

           zipinfo -m -t unzip610b.zip "*.[ch]" "*/Make*"

       On  a  Unix  system, one could use the -T option along with an external
       sorting program (and another filter like head or tail) to get a listing
       of the least or most recently modified files in the archive:

           zipinfo -l -T -h- -t- zip31c.zip | sort -k 8 | head -12
           zipinfo -l -T -h- -t- zip31c.zip | sort -r -k 8 | head -12

       The  sort  option  -k 8 tells it to sort on field 8, which is the date-
       time field in a long- or medium-format (-l, -m) ZipInfo  report.   (Use
       -k 7  for  the  short (-s) format.)  The -r option reverses the default
       smallest-to-largest sort order.

BUGS
       As with UnZip, ZipInfo's -M ("more") option is overly simplistic in its
       handling  of  screen  output.   As  noted above, it fails to detect the
       wrapping of long lines and may thereby cause lines at the  top  of  the
       screen to be scrolled off before being read.  ZipInfo should detect and
       treat each occurrence of line-wrap  as  one  additional  line  printed.
       This  requires  knowledge  of the screen's width as well as its height.
       In addition, ZipInfo should detect the true screen geometry on all sys-
       tems.

       The  interactions among the various listing format, header, and trailer
       options (-h, -l, -m, -s, -t) are unnecessarily complex  and  should  be
       simplified, despite the potential disruption to current users.

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | compress/unzip   |
       +---------------+------------------+
       |Stability      | Volatile         |
       +---------------+------------------+
SEE ALSO
       funzip(1L),   unzip(1L),   unzipsfx(1L),  zip(1L),  zipcloak(1L),  zip-
       note(1L), zipsplit(1L)

URL
       The Info-ZIP main Web page is:
                  http://www.info-zip.org/

       FTP access is available, too:
                  ftp://ftp.info-zip.org/pub/infozip/

NOTES
       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source    was    downloaded    from      http://antinode.info/ftp/info-
       zip/unzip610c23.zip

       Further information about this software can be found on the open source
       community website at http://www.info-zip.org/UnZip.html.



Info-ZIP                      17 Apr 2015 (v6.1)                    ZIPINFO(1)