The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

ZIPINFO(1L)                                           ZIPINFO(1L)

NAME
       zipinfo - list detailed information about a ZIP archive

SYNOPSIS
       zipinfo     [-12smlvhMtTz]     file[.zip]    [file(s) ...]
       [-x xfile(s) ...]

       unzip   -Z   [-12smlvhMtTz]    file[.zip]    [file(s) ...]
       [-x xfile(s) ...]

DESCRIPTION
       zipinfo  lists  technical information about files in a ZIP
       archive, most commonly  found  on  MS-DOS  systems.   Such
       information  includes  file access permissions, encryption
       status, type of compression, version and operating  system
       or  file system of compressing program, and the like.  The
       default behavior (with no options) is to list  single-line
       entries  for  each  file  in  the archive, with header and
       trailer lines providing summary information for the entire
       archive.  The format is a cross between Unix ``ls -l'' and
       ``unzip -v''  output.   See  DETAILED  DESCRIPTION  below.
       Note  that  zipinfo  is  the  same program as unzip (under
       Unix, a link to it); on  some  systems,  however,  zipinfo
       support may have been omitted when unzip was compiled.

ARGUMENTS
       file[.zip]
              Path of the ZIP archive(s).  If the file specifica-
              tion is a wildcard, each matching file is processed
              in  an order determined by the operating system (or
              file system).  Only the filename can be a wildcard;
              the  path  itself cannot.  Wildcard expressions are
              similar to Unix egrep(1) (regular) expressions  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 (`!' or `^') 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 verbatim
                     left bracket, the  three-character  sequence
                     ``[[]'' has to be used.

              (Be  sure  to quote any character that might other-
              wise be interpreted or modified  by  the  operating
              system,  particularly  under  Unix and VMS.)  If no

Info-ZIP             28 February 2005 (v2.42)                   1

ZIPINFO(1L)                                           ZIPINFO(1L)

              matches are found, the specification is assumed  to
              be  a literal filename; and if that also fails, the
              suffix .zip is appended.  Note that self-extracting
              ZIP  files  are  supported,  as  with any other ZIP
              archive; just specify  the  .exe  suffix  (if  any)
              explicitly.

       [file(s)]
              An  optional  list  of  archive  members to be pro-
              cessed, separated by spaces.   (VMS  versions  com-
              piled  with  VMSCLI defined must delimit files with
              commas instead.)  Regular  expressions  (wildcards)
              may  be  used to match multiple members; see above.
              Again, be sure to quote expressions that would oth-
              erwise  be  expanded  or  modified by the operating
              system.

       [-x xfile(s)]
              An optional list of archive members to be  excluded
              from processing.

OPTIONS
       -1     list  filenames  only,  one  per line.  This option
              excludes all others; headers, trailers and  zipfile
              comments are never printed.  It is intended for use
              in Unix shell scripts.

       -2     list filenames only, one per line, but allow  head-
              ers  (-h), trailers (-t) and zipfile comments (-z),
              as well.  This option may be useful in cases  where
              the stored filenames are particularly long.

       -s     list  zipfile  info in short Unix ``ls -l'' format.
              This is the default behavior; see below.

       -m     list zipfile info in medium Unix ``ls -l''  format.
              Identical  to  the  -s output, except that the com-
              pression factor, expressed as a percentage, is also
              listed.

       -l     list  zipfile  info  in long Unix ``ls -l'' format.
              As with -m except  that  the  compressed  size  (in
              bytes) is printed instead of the compression ratio.

       -v     list zipfile  information  in  verbose,  multi-page
              format.

       -h     list  header  line.   The archive name, actual size
              (in bytes) and total number of files is printed.

       -M     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

Info-ZIP             28 February 2005 (v2.42)                   2

ZIPINFO(1L)                                           ZIPINFO(1L)

              viewed by pressing the Enter (Return)  key  or  the
              space  bar.   zipinfo can be terminated by pressing
              the  ``q''  key   and,   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 likelihood
              that some text will  scroll  off  the  top  of  the
              screen  before  being  viewed.  On some systems the
              number of available lines  on  the  screen  is  not
              detected,  in which case zipinfo assumes the height
              is 24 lines.

       -t     list totals for files listed or for all files.  The
              number of files listed, their uncompressed and com-
              pressed total sizes , and their overall compression
              factor  is  printed; or, if only the totals line is
              being printed, the values for  the  entire  archive
              are  given.   The  compressed  total  size does not
              include the 12  additional  header  bytes  of  each
              encrypted  entry.  Note  that  the total compressed
              (data) size will never  match  the  actual  zipfile
              size, since the latter includes all of the internal
              zipfile headers in addition to the compressed data.

       -T     print  the file dates and times in a sortable deci-
              mal format (yymmdd.hhmmss).  The default date  for-
              mat is a more standard, human-readable version with
              abbreviated month names (see examples below).

       -z     include the archive comment (if any) in  the  list-
              ing.

DETAILED DESCRIPTION
       zipinfo  has  a  number  of modes, and its behavior can be
       rather difficult to fathom if one isn't familiar with Unix
       ls(1)  (or  even  if  one is).  The default behavior is to
       list files in the following format:

  -rw-rws---  1.9 unx    2802 t- defX 11-Aug-91 13:48 perms.2660

       The last three fields are the modification date  and  time
       of  the  file,  and its name.  The case of the filename is
       respected; thus files that  come  from  MS-DOS  PKZIP  are
       always  capitalized.  If the file was zipped with a stored
       directory name, that is also  displayed  as  part  of  the
       filename.

       The  second  and  third  fields indicate that the file was
       zipped under Unix with version 1.9 of zip.  Since it comes
       from  Unix,  the  file permissions at the beginning of the
       line are printed in Unix format.  The  uncompressed  file-
       size (2802 in this example) is the fourth field.

Info-ZIP             28 February 2005 (v2.42)                   3

ZIPINFO(1L)                                           ZIPINFO(1L)

       The  fifth  field  consists  of  two characters, either of
       which may take on several values.  The first character may
       be  either  `t'  or  `b', indicating that zip believes the
       file to be text or binary, respectively; but if  the  file
       is  encrypted, zipinfo notes this fact by capitalizing the
       character (`T' or `B').  The  second  character  may  also
       take  on  four  values,  depending  on whether there is an
       extended local header and/or an ``extra field'' associated
       with  the  file  (fully explained in PKWare's APPNOTE.TXT,
       but basically analogous to pragmas in ANSI  C--i.e.,  they
       provide a standard way to include non-standard information
       in the archive).  If neither exists, the character will be
       a  hyphen  (`-'); if there is an extended local header but
       no extra field, `l'; if the  reverse,  `x';  and  if  both
       exist, `X'.  Thus the file in this example is (probably) a
       text file, is not encrypted,  and  has  neither  an  extra
       field  nor  an  extended  local header associated with it.
       The example below, on the  other  hand,  is  an  encrypted
       binary file with an extra field:

  RWD,R,R     0.9 vms     168 Bx shrk  9-Aug-91 19:15 perms.0644

       Extra fields are used for various purposes (see discussion
       of the -v option below) including the storage of VMS  file
       attributes,  which is presumably the case here.  Note that
       the file attributes are listed in VMS format.  Some  other
       possibilities  for  the  host  operating  system (which is
       actually a misnomer--host file  system  is  more  correct)
       include  OS/2  or  NT  with  High  Performance File System
       (HPFS), MS-DOS, OS/2 or  NT  with  File  Allocation  Table
       (FAT)  file  system,  and Macintosh.  These are denoted as
       follows:

  -rw-a--     1.0 hpf    5358 Tl i4:3  4-Dec-91 11:33 longfilename.hpfs
  -r--ahs     1.1 fat    4096 b- i4:2 14-Jul-91 12:58 EA DATA. SF
  --w-------  1.0 mac   17357 bx i8:2  4-May-92 04:02 unzip.macr

       File attributes in the first two cases are indicated in  a
       Unix-like  format,  where  the  seven  subfields  indicate
       whether the file:  (1) is a  directory,  (2)  is  readable
       (always true), (3) is writable, (4) is executable (guessed
       on the basis of the extension--.exe, .com, .bat, .cmd  and
       .btm  files are assumed to be so), (5) has its archive bit
       set, (6) is hidden, and (7) is a system file.  Interpreta-
       tion  of  Macintosh  file attributes is unreliable because
       some Macintosh archivers don't store any attributes in the
       archive.

       Finally,  the sixth field indicates the compression method
       and possible sub-method used.  There are six methods known
       at  present:   storing (no compression), reducing, shrink-
       ing, imploding, tokenizing (never publicly released),  and
       deflating.  In addition, there are four levels of reducing
       (1 through 4); four types of imploding (4K or  8K  sliding

Info-ZIP             28 February 2005 (v2.42)                   4

ZIPINFO(1L)                                           ZIPINFO(1L)

       dictionary,  and 2 or 3 Shannon-Fano trees); and four lev-
       els of deflating (superfast, fast,  normal,  maximum  com-
       pression).   zipinfo  represents  these  methods and their
       sub-methods as follows:  stor;  re:1,  re:2,  etc.;  shrk;
       i4:2, i8:3, etc.; tokn; and defS, defF, defN, and defX.

       The  medium  and long listings are almost identical to the
       short format except  that  they  add  information  on  the
       file's  compression.   The  medium format lists the file's
       compression factor as a percentage indicating  the  amount
       of space that has been ``removed'':

  -rw-rws---  1.5 unx    2802 t- 81% defX 11-Aug-91 13:48 perms.2660

       In this example, the file has been compressed by more than
       a factor of five; the compressed data are only 19% of  the
       original  size.   The  long  format  gives  the compressed
       file's size in bytes, instead:

  -rw-rws---  1.5 unx    2802 t-     538 defX 11-Aug-91 13:48 perms.2660

       In contrast to the unzip  listings,  the  compressed  size
       figures in this listing format denote the complete size of
       compressed data, including the 12 extra  header  bytes  in
       case of encrypted entries.

       Adding  the  -T  option  changes the file date and time to
       decimal format:

  -rw-rws---  1.5 unx    2802 t-     538 defX 910811.134804 perms.2660

       Note that because of limitations in the MS-DOS format used
       to  store  file times, the seconds field is always rounded
       to the nearest  even  second.   For  Unix  files  this  is
       expected  to  change in the next major releases of zip(1L)
       and unzip.

       In addition to individual file information, a default zip-
       file listing also includes header and trailer lines:

  Archive:  OS2.zip   5453 bytes   5 files
  ,,rw,       1.0 hpf     730 b- i4:3 26-Jun-92 23:40 Contents
  ,,rw,       1.0 hpf    3710 b- i4:3 26-Jun-92 23:33 makefile.os2
  ,,rw,       1.0 hpf    8753 b- i8:3 26-Jun-92 15:29 os2unzip.c
  ,,rw,       1.0 hpf      98 b- stor 21-Aug-91 15:34 unzip.def
  ,,rw,       1.0 hpf      95 b- stor 21-Aug-91 17:51 zipinfo.def
  5 files, 13386 bytes uncompressed, 4951 bytes compressed:  63.0%

       The  header  line gives the name of the archive, its total
       size, and the total number of files; the trailer gives the
       number of files listed, their total uncompressed size, and
       their total compressed size (not including  any  of  zip's
       internal  overhead).  If, however, one or more file(s) are
       provided, the header and trailer  lines  are  not  listed.

Info-ZIP             28 February 2005 (v2.42)                   5

ZIPINFO(1L)                                           ZIPINFO(1L)

       This behavior is also similar to that of Unix's ``ls -l'';
       it may be overridden by specifying the -h and  -t  options
       explicitly.   In  such a case the listing format must also
       be specified explicitly, since -h or -t (or both)  in  the
       absence  of  other options implies that ONLY the header or
       trailer line (or both) is listed.  See the  EXAMPLES  sec-
       tion  below  for  a  semi-intelligible translation of this
       nonsense.

       The verbose listing is mostly self-explanatory.   It  also
       lists  file  comments and the zipfile comment, if any, and
       the type and number of bytes in any stored  extra  fields.
       Currently  known  types  of  extra fields include PKWARE's
       authentication (``AV'') info;  OS/2  extended  attributes;
       VMS  filesystem  info,  both PKWARE and Info-ZIP versions;
       Macintosh resource forks; Acorn/Archimedes  SparkFS  info;
       and  so  on.   (Note  that  in  the  case of OS/2 extended
       attributes--perhaps the most common use of  zipfile  extra
       fields--the  size of the stored EAs as reported by zipinfo
       may not match the number given by OS/2's dir command: OS/2
       always reports the number of bytes required in 16-bit for-
       mat, whereas zipinfo always reports the 32-bit storage.)

       Again, the  compressed  size  figures  of  the  individual
       entries  include  the  12 extra header bytes for encrypted
       entries.  In contrast, the archive total  compressed  size
       and  the  average  compression  ratio shown in the summary
       bottom line are calculated without  the  extra  12  header
       bytes of encrypted entries.

ENVIRONMENT OPTIONS
       Modifying zipinfo's default behavior via options placed in
       an environment  variable  can  be  a  bit  complicated  to
       explain,  due  to  zipinfo's  attempts  to  handle various
       defaults in an intuitive, yet Unix-like, manner.  (Try not
       to  laugh.)  Nevertheless, there is some underlying logic.
       In brief, there are three ``priority levels'' of  options:
       the  default options; environment options, which can over-
       ride or add to the defaults; and explicit options given by
       the  user,  which  can  override  or  add to either of the
       above.

       The default listing format, as  noted  above,  corresponds
       roughly  to  the "zipinfo -hst" command (except when indi-
       vidual zipfile members are specified).  A user who prefers
       the long-listing format (-l) can make use of the zipinfo's
       environment variable to change this default:

       Unix Bourne shell:
              ZIPINFO=-l; export ZIPINFO

       Unix C shell:
              setenv ZIPINFO -l

Info-ZIP             28 February 2005 (v2.42)                   6

ZIPINFO(1L)                                           ZIPINFO(1L)

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

       VMS (quotes for lowercase):
              define ZIPINFO_OPTS "-l"

       If, in addition, the user dislikes the trailer line,  zip-
       info's  concept  of  ``negative  options''  may be used to
       override the default  inclusion  of  the  line.   This  is
       accomplished by preceding the undesired option with one or
       more minuses:  e.g., ``-l-t'' or ``--tl'', in  this  exam-
       ple.   The  first  hyphen is the regular switch character,
       but the one before the `t' is a minus sign.  The dual  use
       of  hyphens may seem a little awkward, but it's reasonably
       intuitive nonetheless:  simply ignore the first hyphen and
       go from there.  It is also consistent with the behavior of
       the Unix command nice(1).

       As suggested above, the default variable  names  are  ZIP-
       INFO_OPTS  for  VMS (where the symbol used to install zip-
       info as a foreign command would otherwise be confused with
       the environment variable), and ZIPINFO for all other oper-
       ating systems.  For compatibility with zip(1L), ZIPINFOOPT
       is  also accepted (don't ask).  If both ZIPINFO and ZIPIN-
       FOOPT are  defined,  however,  ZIPINFO  takes  precedence.
       unzip's diagnostic option (-v with no zipfile name) can be
       used to check the values of all four  possible  unzip  and
       zipinfo environment variables.

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

           zipinfo storage

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

           zipinfo -l storage

       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 storage
           zipinfo storage \*

       (where  the  backslash is required only if the shell would
       otherwise expand the `*' wildcard, as in Unix  when  glob-
       bing is turned on--double quotes around the asterisk would
       have worked as well).  To turn  off  the  totals  line  by
       default,  use the environment variable (C shell is assumed

Info-ZIP             28 February 2005 (v2.42)                   7

ZIPINFO(1L)                                           ZIPINFO(1L)

       here):

           setenv ZIPINFO --t
           zipinfo storage

       To get the full, short-format listing of the first example
       again,  given  that  the environment variable is set as in
       the previous example, it is necessary to  specify  the  -s
       option  explicitly,  since the -t option by itself implies
       that ONLY the footer line is to be printed:

           setenv ZIPINFO --t
           zipinfo -t storage            [only totals line]
           zipinfo -st storage           [full listing]

       The -s option, like -m and -l, includes headers and  foot-
       ers  by  default,  unless  otherwise specified.  Since the
       environment variable specified no footers and that  has  a
       higher  precedence  than  the  default  behavior of -s, an
       explicit -t option was necessary to produce the full list-
       ing.   Nothing was indicated about the header, however, so
       the -s option was sufficient.  Note that both the  -h  and
       -t  options,  when  used by themselves or with each other,
       override any default listing of  member  files;  only  the
       header and/or footer are printed.  This behavior is useful
       when zipinfo is used with a  wildcard  zipfile  specifica-
       tion;  the  contents  of  all zipfiles are then summarized
       with a single command.

       To list information on a single file within  the  archive,
       in medium format, specify the filename explicitly:

           zipinfo -m storage unshrink.c

       The  specification of any member file, as in this example,
       will override the default header and  totals  lines;  only
       the  single  line  of information about the requested file
       will be printed.   This  is  intuitively  what  one  would
       expect  when  requesting  information about a single file.
       For multiple files, it is often useful to know  the  total
       compressed  and uncompressed size; in such cases -t may be
       specified explicitly:

           zipinfo -mt storage "*.[ch]" Mak\*

       To get maximal information about the ZIP archive, use  the
       verbose  option.   It  is  usually wise to pipe the output
       into a filter such as Unix more(1) if the operating system
       allows it:

           zipinfo -v storage | more

       Finally,  to  see  the most recently modified files in the
       archive, use the -T option in conjunction with an external

Info-ZIP             28 February 2005 (v2.42)                   8

ZIPINFO(1L)                                           ZIPINFO(1L)

       sorting  utility such as Unix sort(1) (and sed(1) as well,
       in this example):

           zipinfo -T storage | sort -nr -k 7 | sed 15q

       The -nr option to sort(1) tells it to sort numerically  in
       reverse  order  rather than in textual order, and the -k 7
       option tells it  to  sort  on  the  seventh  field.   This
       assumes  the  default short-listing format; if -m or -l is
       used, the proper sort(1) option would be -k 8.  Older ver-
       sions of sort(1) do not support the -k option, but you can
       use the traditional + option instead, e.g., +6 instead  of
       -k 7.  The sed(1) command filters out all but the first 15
       lines of the listing.   Future  releases  of  zipinfo  may
       incorporate  date/time  and  filename  sorting as built-in
       options.

TIPS
       The author finds it convenient to define an alias  ii  for
       zipinfo  on  systems that allow aliases (or, on other sys-
       tems, copy/rename the executable, create a link or  create
       a  command file with the name ii).  The ii usage parallels
       the common ll alias for long listings  in  Unix,  and  the
       similarity  between  the  outputs  of the two commands was
       intentional.

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 systems.

       zipinfo's listing-format behavior is unnecessarily complex
       and  should  be  simplified.   (This is not to say that it
       will be.)

SEE ALSO
       ls(1), funzip(1L), unzip(1L), unzipsfx(1L), zip(1L),  zip-
       cloak(1L), zipnote(1L), zipsplit(1L)

URL
       The Info-ZIP home page is currently at
           http://www.info-zip.org/pub/infozip/
       or
           ftp://ftp.info-zip.org/pub/infozip/ .

AUTHOR
       Greg  ``Cave  Newt''  Roelofs.   ZipInfo contains pattern-

Info-ZIP             28 February 2005 (v2.42)                   9

ZIPINFO(1L)                                           ZIPINFO(1L)

       matching code by Mark Adler and fixes/improvements by many
       others.   Please  refer  to the CONTRIBS file in the UnZip
       source distribution for a more complete list.

Info-ZIP             28 February 2005 (v2.42)                  10