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

              (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
              matches are found, the specification is assumed  to
              be  a literal filename; and if that also fails, the

Info-ZIP             17 February 2002 (v2.4)                    1

ZIPINFO(1L)                                           ZIPINFO(1L)

              suffix .zip is appended.  Note that self-extracting
              ZIP files are supported; just specify the .exe suf-
              fix (if any) explicitly.

       [file(s)]
              An optional list of  archive  members  to  be  pro-
              cessed.   Regular  expressions  (wildcards)  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 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
              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

Info-ZIP             17 February 2002 (v2.4)                    2

ZIPINFO(1L)                                           ZIPINFO(1L)

              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.   Note that the total compressed (data)
              size will never  match  the  actual  zipfile  size,
              since  the latter includes all of the internal zip-
              file 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.

       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

Info-ZIP             17 February 2002 (v2.4)                    3

ZIPINFO(1L)                                           ZIPINFO(1L)

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

Info-ZIP             17 February 2002 (v2.4)                    4

ZIPINFO(1L)                                           ZIPINFO(1L)

       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

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

Info-ZIP             17 February 2002 (v2.4)                    5

ZIPINFO(1L)                                           ZIPINFO(1L)

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

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

       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

Info-ZIP             17 February 2002 (v2.4)                    6

ZIPINFO(1L)                                           ZIPINFO(1L)

       ZIPINFO_OPTS for VMS (where the  symbol  used  to  install
       zipinfo  as  a foreign command would otherwise be confused
       with the environment variable), and ZIPINFO for all  other
       operating systems.  For compatibility with zip(1L), ZIPIN-
       FOOPT is also accepted (don't ask).  If both  ZIPINFO  and
       ZIPINFOOPT 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
       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

Info-ZIP             17 February 2002 (v2.4)                    7

ZIPINFO(1L)                                           ZIPINFO(1L)

       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
       sorting utility such as Unix sort(1) (and tail(1) as well,
       in this example):

           zipinfo -T storage | sort -n +6 | tail -15

       The  -n  option  to  sort(1)  tells it to sort numerically
       rather than in ASCII order, and the +6 option tells it  to
       sort  on  the  sixth  field after the first one (i.e., the
       seventh field).  This assumes  the  default  short-listing
       format;  if  -m  or  -l is used, the proper sort(1) option
       would be +7.  The tail(1) command filters out all but  the
       last  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

Info-ZIP             17 February 2002 (v2.4)                    8

ZIPINFO(1L)                                           ZIPINFO(1L)

       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-
       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             17 February 2002 (v2.4)                    9

