1ZIPINFO(1L)                                                        ZIPINFO(1L)
2
3NAME
4       zipinfo - list detailed information about a ZIP archive
5
6SYNOPSIS
7       zipinfo [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...]
8
9       unzip -Z [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...]
10
11DESCRIPTION
12       zipinfo  lists technical information about files in a ZIP archive, most
13       commonly found on  MS-DOS  systems.   Such  information  includes  file
14       access permissions, encryption status, type of compression, version and
15       operating system or file system of compressing program, and  the  like.
16       The  default  behavior (with no options) is to list single-line entries
17       for each file in the archive, with header and trailer  lines  providing
18       summary  information  for  the  entire  archive.  The format is a cross
19       between Unix ``ls -l'' and ``unzip -v'' output.  See DETAILED  DESCRIP-
20       TION  below.   Note  that  zipinfo  is the same program as unzip (under
21       Unix, a link to it); on some systems, however, zipinfo support may have
22       been omitted when unzip was compiled.
23
24ARGUMENTS
25       file[.zip]
26              Path  of  the  ZIP  archive(s).   If the file specification is a
27              wildcard, each matching file is processed in an order determined
28              by the operating system (or file system).  Only the filename can
29              be a wildcard; the path itself cannot.  Wildcard expressions are
30              similar to Unix egrep(1) (regular) expressions and may contain:
31
32              *      matches a sequence of 0 or more characters
33
34              ?      matches exactly 1 character
35
36              [...]  matches  any  single character found inside the brackets;
37                     ranges are specified by a beginning character, a  hyphen,
38                     and  an  ending  character.  If an exclamation point or a
39                     caret (`!' or `^') follows the  left  bracket,  then  the
40                     range  of  characters within the brackets is complemented
41                     (that is,  anything  except  the  characters  inside  the
42                     brackets  is  considered a match).  To specify a verbatim
43                     left bracket, the three-character sequence ``[[]'' has to
44                     be used.
45
46              (Be  sure  to quote any character that might otherwise be inter-
47              preted or modified by the operating system,  particularly  under
48              Unix  and  VMS.)   If no matches are found, the specification is
49              assumed to be a literal filename; and if that  also  fails,  the
50              suffix  .zip  is  appended.  Note that self-extracting ZIP files
51              are supported, as with any other ZIP archive; just  specify  the
52              .exe suffix (if any) explicitly.
53
54       [file(s)]
55              An  optional  list of archive members to be processed, separated
56              by spaces.  (VMS versions  compiled  with  VMSCLI  defined  must
57              delimit  files with commas instead.)  Regular expressions (wild-
58              cards) may be used to match multiple members; see above.  Again,
59              be sure to quote expressions that would otherwise be expanded or
60              modified by the operating system.
61
62       [-x xfile(s)]
63              An optional list of archive members to be excluded from process-
64              ing.
65
66OPTIONS
67       -1     list  filenames  only,  one  per line.  This option excludes all
68              others;  headers,  trailers  and  zipfile  comments  are   never
69              printed.  It is intended for use in Unix shell scripts.
70
71       -2     list  filenames  only,  one  per  line,  but allow headers (-h),
72              trailers (-t) and zipfile comments (-z), as well.   This  option
73              may  be  useful in cases where the stored filenames are particu-
74              larly long.
75
76       -s     list zipfile info in short Unix ``ls -l'' format.  This  is  the
77              default behavior; see below.
78
79       -m     list zipfile info in medium Unix ``ls -l'' format.  Identical to
80              the -s output, except that the compression factor, expressed  as
81              a percentage, is also listed.
82
83       -l     list  zipfile  info  in  long Unix ``ls -l'' format.  As with -m
84              except that the compressed size (in bytes) is printed instead of
85              the compression ratio.
86
87       -v     list zipfile information in verbose, multi-page format.
88
89       -h     list  header line.  The archive name, actual size (in bytes) and
90              total number of files is printed.
91
92       -M     pipe all output through an internal pager similar  to  the  Unix
93              more(1)  command.   At the end of a screenful of output, zipinfo
94              pauses with a ``--More--'' prompt; the  next  screenful  may  be
95              viewed  by  pressing  the  Enter  (Return) key or the space bar.
96              zipinfo can be terminated by pressing the ``q'' key and, on some
97              systems, the Enter/Return key.  Unlike Unix more(1), there is no
98              forward-searching or editing capability.  Also, zipinfo  doesn't
99              notice if long lines wrap at the edge of the screen, effectively
100              resulting in the printing of two or more lines and  the  likeli-
101              hood that some text will scroll off the top of the screen before
102              being viewed.  On some systems the number of available lines  on
103              the  screen  is  not detected, in which case zipinfo assumes the
104              height is 24 lines.
105
106       -t     list totals for files listed or for all files.   The  number  of
107              files  listed,  their  uncompressed and compressed total sizes ,
108              and their overall compression factor is printed; or, if only the
109              totals  line is being printed, the values for the entire archive
110              are given.  The compressed total size does not  include  the  12
111              additional  header  bytes of each encrypted entry. Note that the
112              total compressed (data) size will never match the actual zipfile
113              size,  since  the  latter  includes  all of the internal zipfile
114              headers in addition to the compressed data.
115
116       -T     print the file dates and times  in  a  sortable  decimal  format
117              (yymmdd.hhmmss).   The  default  date format is a more standard,
118              human-readable version with abbreviated month names  (see  exam-
119              ples below).
120
121       -U     [UNICODE_SUPPORT  only]  modify or disable UTF-8 handling.  When
122              UNICODE_SUPPORT is available, the  option  -U  forces  unzip  to
123              escape  all  non-ASCII  characters from UTF-8 coded filenames as
124              ``#Uxxxx''.  This option is mainly provided for  debugging  pur-
125              pose when the fairly new UTF-8 support is suspected to mangle up
126              extracted filenames.
127
128              The option -UU allows to entirely  disable  the  recognition  of
129              UTF-8  encoded  filenames.   The  handling  of  filename codings
130              within unzip falls back to the behaviour of previous versions.
131
132       -z     include the archive comment (if any) in the listing.
133
134DETAILED DESCRIPTION
135       zipinfo has a number of modes, and its behavior can be rather difficult
136       to  fathom  if  one isn't familiar with Unix ls(1) (or even if one is).
137       The default behavior is to list files in the following format:
138
139  -rw-rws---  1.9 unx    2802 t- defX 11-Aug-91 13:48 perms.2660
140
141       The last three fields are the modification date and time of  the  file,
142       and  its  name.  The case of the filename is respected; thus files that
143       come from MS-DOS PKZIP are always capitalized.  If the file was  zipped
144       with  a  stored  directory  name, that is also displayed as part of the
145       filename.
146
147       The second and third fields indicate that the  file  was  zipped  under
148       Unix  with version 1.9 of zip.  Since it comes from Unix, the file per-
149       missions at the beginning of the line are printed in Unix format.   The
150       uncompressed file-size (2802 in this example) is the fourth field.
151
152       The fifth field consists of two characters, either of which may take on
153       several values.  The first character may be either `t' or `b', indicat-
154       ing  that zip believes the file to be text or binary, respectively; but
155       if the file is encrypted, zipinfo notes this fact by  capitalizing  the
156       character  (`T'  or  `B').   The second character may also take on four
157       values, depending on whether there is an extended local  header  and/or
158       an  ``extra  field''  associated  with  the  file  (fully  explained in
159       PKWare's APPNOTE.TXT,  but  basically  analogous  to  pragmas  in  ANSI
160       C--i.e.,  they  provide a standard way to include non-standard informa-
161       tion in the archive).  If neither  exists,  the  character  will  be  a
162       hyphen  (`-'); if there is an extended local header but no extra field,
163       `l'; if the reverse, `x'; and if both exist, `X'.   Thus  the  file  in
164       this  example is (probably) a text file, is not encrypted, and has nei-
165       ther an extra field nor an extended local header  associated  with  it.
166       The  example below, on the other hand, is an encrypted binary file with
167       an extra field:
168
169  RWD,R,R     0.9 vms     168 Bx shrk  9-Aug-91 19:15 perms.0644
170
171       Extra fields are used for various purposes (see discussion  of  the  -v
172       option  below)  including  the storage of VMS file attributes, which is
173       presumably the case here.  Note that the file attributes are listed  in
174       VMS  format.   Some  other  possibilities for the host operating system
175       (which is actually  a  misnomer--host  file  system  is  more  correct)
176       include  OS/2  or  NT with High Performance File System (HPFS), MS-DOS,
177       OS/2 or NT with File Allocation Table (FAT) file system, and Macintosh.
178       These are denoted as follows:
179
180  -rw-a--     1.0 hpf    5358 Tl i4:3  4-Dec-91 11:33 longfilename.hpfs
181  -r--ahs     1.1 fat    4096 b- i4:2 14-Jul-91 12:58 EA DATA. SF
182  --w-------  1.0 mac   17357 bx i8:2  4-May-92 04:02 unzip.macr
183
184       File  attributes  in  the  first two cases are indicated in a Unix-like
185       format, where the seven subfields indicate whether the file:  (1) is  a
186       directory,  (2) is readable (always true), (3) is writable, (4) is exe-
187       cutable (guessed on the basis of the extension--.exe, .com, .bat,  .cmd
188       and  .btm files are assumed to be so), (5) has its archive bit set, (6)
189       is hidden, and (7) is a system file.  Interpretation of Macintosh  file
190       attributes  is  unreliable because some Macintosh archivers don't store
191       any attributes in the archive.
192
193       Finally, the sixth field indicates the compression method and  possible
194       sub-method  used.  There are six methods known at present:  storing (no
195       compression), reducing, shrinking, imploding,  tokenizing  (never  pub-
196       licly  released), and deflating.  In addition, there are four levels of
197       reducing (1 through 4); four types of imploding (4K or 8K sliding  dic-
198       tionary,  and  2 or 3 Shannon-Fano trees); and four levels of deflating
199       (superfast, fast, normal,  maximum  compression).   zipinfo  represents
200       these  methods  and  their  sub-methods  as follows:  stor; re:1, re:2,
201       etc.; shrk; i4:2, i8:3, etc.; tokn; and defS, defF, defN, and defX.
202
203       The medium and long listings are almost identical to the  short  format
204       except that they add information on the file's compression.  The medium
205       format lists the file's compression factor as a  percentage  indicating
206       the amount of space that has been ``removed'':
207
208  -rw-rws---  1.5 unx    2802 t- 81% defX 11-Aug-91 13:48 perms.2660
209
210       In  this example, the file has been compressed by more than a factor of
211       five; the compressed data are only 19% of the original size.  The  long
212       format gives the compressed file's size in bytes, instead:
213
214  -rw-rws---  1.5 unx    2802 t-     538 defX 11-Aug-91 13:48 perms.2660
215
216       In  contrast to the unzip listings, the compressed size figures in this
217       listing format denote the complete size of compressed  data,  including
218       the 12 extra header bytes in case of encrypted entries.
219
220       Adding the -T option changes the file date and time to decimal format:
221
222  -rw-rws---  1.5 unx    2802 t-     538 defX 910811.134804 perms.2660
223
224       Note  that  because  of  limitations in the MS-DOS format used to store
225       file times, the seconds field is always rounded  to  the  nearest  even
226       second.   For  Unix  files this is expected to change in the next major
227       releases of zip(1L) and unzip.
228
229       In addition to individual file information, a default  zipfile  listing
230       also includes header and trailer lines:
231
232  Archive:  OS2.zip   5453 bytes   5 files
233  ,,rw,       1.0 hpf     730 b- i4:3 26-Jun-92 23:40 Contents
234  ,,rw,       1.0 hpf    3710 b- i4:3 26-Jun-92 23:33 makefile.os2
235  ,,rw,       1.0 hpf    8753 b- i8:3 26-Jun-92 15:29 os2unzip.c
236  ,,rw,       1.0 hpf      98 b- stor 21-Aug-91 15:34 unzip.def
237  ,,rw,       1.0 hpf      95 b- stor 21-Aug-91 17:51 zipinfo.def
238  5 files, 13386 bytes uncompressed, 4951 bytes compressed:  63.0%
239
240       The  header line gives the name of the archive, its total size, and the
241       total number of files; the trailer gives the number  of  files  listed,
242       their  total  uncompressed  size,  and their total compressed size (not
243       including any of zip's internal overhead).  If, however,  one  or  more
244       file(s)  are  provided,  the  header  and trailer lines are not listed.
245       This behavior is also similar to that of Unix's ``ls -l'';  it  may  be
246       overridden  by  specifying the -h and -t options explicitly.  In such a
247       case the listing format must also be specified explicitly, since -h  or
248       -t  (or  both)  in  the  absence of other options implies that ONLY the
249       header or trailer line (or both) is listed.  See the  EXAMPLES  section
250       below for a semi-intelligible translation of this nonsense.
251
252       The  verbose  listing  is  mostly self-explanatory.  It also lists file
253       comments and the zipfile comment, if any, and the type  and  number  of
254       bytes  in  any  stored  extra  fields.   Currently known types of extra
255       fields include PKWARE's authentication  (``AV'')  info;  OS/2  extended
256       attributes;  VMS  filesystem  info,  both PKWARE and Info-ZIP versions;
257       Macintosh resource forks; Acorn/Archimedes SparkFS  info;  and  so  on.
258       (Note  that  in  the case of OS/2 extended attributes--perhaps the most
259       common use of zipfile extra fields--the  size  of  the  stored  EAs  as
260       reported  by  zipinfo may not match the number given by OS/2's dir com-
261       mand: OS/2 always reports the number of bytes required in  16-bit  for-
262       mat, whereas zipinfo always reports the 32-bit storage.)
263
264       Again,  the  compressed  size figures of the individual entries include
265       the 12 extra header bytes for  encrypted  entries.   In  contrast,  the
266       archive  total  compressed size and the average compression ratio shown
267       in the summary bottom line are calculated without the extra  12  header
268       bytes of encrypted entries.
269
270ENVIRONMENT OPTIONS
271       Modifying  zipinfo's default behavior via options placed in an environ-
272       ment variable can be a bit complicated to  explain,  due  to  zipinfo's
273       attempts  to  handle  various  defaults in an intuitive, yet Unix-like,
274       manner.  (Try not to laugh.)  Nevertheless, there  is  some  underlying
275       logic.   In brief, there are three ``priority levels'' of options:  the
276       default options; environment options, which can override or add to  the
277       defaults; and explicit options given by the user, which can override or
278       add to either of the above.
279
280       The default listing format, as noted above, corresponds roughly to  the
281       "zipinfo  -hst"  command  (except  when  individual zipfile members are
282       specified).  A user who prefers the long-listing format (-l)  can  make
283       use of the zipinfo's environment variable to change this default:
284
285       Unix Bourne shell:
286              ZIPINFO=-l; export ZIPINFO
287
288       Unix C shell:
289              setenv ZIPINFO -l
290
291       OS/2 or MS-DOS:
292              set ZIPINFO=-l
293
294       VMS (quotes for lowercase):
295              define ZIPINFO_OPTS "-l"
296
297       If,  in addition, the user dislikes the trailer line, zipinfo's concept
298       of ``negative options'' may be used to override the  default  inclusion
299       of  the  line.   This is accomplished by preceding the undesired option
300       with one or more minuses:  e.g., ``-l-t'' or ``--tl'', in this example.
301       The  first  hyphen  is the regular switch character, but the one before
302       the `t' is a minus sign.  The dual use of hyphens  may  seem  a  little
303       awkward,  but it's reasonably intuitive nonetheless:  simply ignore the
304       first hyphen and go from there.  It is also consistent with the  behav-
305       ior of the Unix command nice(1).
306
307       As suggested above, the default variable names are ZIPINFO_OPTS for VMS
308       (where the symbol used to install zipinfo as a  foreign  command  would
309       otherwise  be  confused with the environment variable), and ZIPINFO for
310       all other operating systems.  For compatibility  with  zip(1L),  ZIPIN-
311       FOOPT is also accepted (don't ask).  If both ZIPINFO and ZIPINFOOPT are
312       defined, however, ZIPINFO takes precedence.  unzip's diagnostic  option
313       (-v  with  no zipfile name) can be used to check the values of all four
314       possible unzip and zipinfo environment variables.
315
316EXAMPLES
317       To get a basic, short-format listing of the complete contents of a  ZIP
318       archive  storage.zip,  with  both header and totals lines, use only the
319       archive name as an argument to zipinfo:
320
321           zipinfo storage
322
323       To produce a basic, long-format listing (not verbose), including header
324       and totals lines, use -l:
325
326           zipinfo -l storage
327
328       To  list the complete contents of the archive without header and totals
329       lines, either negate the -h and -t options or else specify the contents
330       explicitly:
331
332           zipinfo --h-t storage
333           zipinfo storage \*
334
335       (where  the  backslash  is  required  only if the shell would otherwise
336       expand the `*' wildcard, as in Unix when globbing is turned  on--double
337       quotes around the asterisk would have worked as well).  To turn off the
338       totals line by default,  use  the  environment  variable  (C  shell  is
339       assumed here):
340
341           setenv ZIPINFO --t
342           zipinfo storage
343
344       To get the full, short-format listing of the first example again, given
345       that the environment variable is set as in the previous example, it  is
346       necessary  to  specify the -s option explicitly, since the -t option by
347       itself implies that ONLY the footer line is to be printed:
348
349           setenv ZIPINFO --t
350           zipinfo -t storage            [only totals line]
351           zipinfo -st storage           [full listing]
352
353       The -s option, like -m and -l, includes headers and footers by default,
354       unless  otherwise  specified.  Since the environment variable specified
355       no footers and that has a higher precedence than the  default  behavior
356       of -s, an explicit -t option was necessary to produce the full listing.
357       Nothing was indicated about the header, however, so the -s  option  was
358       sufficient.   Note  that both the -h and -t options, when used by them-
359       selves or with each other,  override  any  default  listing  of  member
360       files;  only  the  header  and/or footer are printed.  This behavior is
361       useful when zipinfo is used with a wildcard zipfile specification;  the
362       contents of all zipfiles are then summarized with a single command.
363
364       To list information on a single file within the archive, in medium for-
365       mat, specify the filename explicitly:
366
367           zipinfo -m storage unshrink.c
368
369       The specification of any member file, as in this example, will override
370       the  default  header and totals lines; only the single line of informa-
371       tion about the requested file will be  printed.   This  is  intuitively
372       what  one would expect when requesting information about a single file.
373       For multiple files, it is often useful to know the total compressed and
374       uncompressed size; in such cases -t may be specified explicitly:
375
376           zipinfo -mt storage "*.[ch]" Mak\*
377
378       To  get  maximal  information  about  the  ZIP archive, use the verbose
379       option.  It is usually wise to pipe the output into a  filter  such  as
380       Unix more(1) if the operating system allows it:
381
382           zipinfo -v storage | more
383
384       Finally,  to  see  the most recently modified files in the archive, use
385       the -T option in conjunction with an external sorting utility  such  as
386       Unix sort(1) (and sed(1) as well, in this example):
387
388           zipinfo -T storage | sort -nr -k 7 | sed 15q
389
390       The -nr option to sort(1) tells it to sort numerically in reverse order
391       rather than in textual order, and the -k 7 option tells it to  sort  on
392       the  seventh  field.  This assumes the default short-listing format; if
393       -m or -l is used, the proper sort(1) option would be -k 8.  Older  ver-
394       sions  of  sort(1)  do  not  support the -k option, but you can use the
395       traditional + option instead, e.g., +6 instead  of  -k 7.   The  sed(1)
396       command  filters out all but the first 15 lines of the listing.  Future
397       releases of zipinfo may incorporate date/time and filename  sorting  as
398       built-in options.
399
400TIPS
401       The  author  finds  it  convenient to define an alias ii for zipinfo on
402       systems that allow aliases (or, on other systems, copy/rename the  exe-
403       cutable, create a link or create a command file with the name ii).  The
404       ii usage parallels the common ll alias for long listings in  Unix,  and
405       the similarity between the outputs of the two commands was intentional.
406
407BUGS
408       As with unzip, zipinfo's -M (``more'') option is overly  simplistic  in
409       its  handling  of screen output; as noted above, it fails to detect the
410       wrapping of long lines and may thereby cause lines at the  top  of  the
411       screen to be scrolled off before being read.  zipinfo should detect and
412       treat each occurrence of line-wrap  as  one  additional  line  printed.
413       This  requires  knowledge  of the screen's width as well as its height.
414       In addition, zipinfo should detect the true screen geometry on all sys-
415       tems.
416
417       zipinfo's  listing-format  behavior is unnecessarily complex and should
418       be simplified.  (This is not to say that it will be.)
419
420SEE ALSO
421       ls(1), funzip(1L), unzip(1L), unzipsfx(1L), zip(1L), zipcloak(1L), zip-
422       note(1L), zipsplit(1L)
423
424URL
425       The Info-ZIP home page is currently at
426           http://www.info-zip.org/pub/infozip/
427       or
428           ftp://ftp.info-zip.org/pub/infozip/ .
429
430AUTHOR
431       Greg  ``Cave Newt'' Roelofs.  ZipInfo contains pattern-matching code by
432       Mark Adler and fixes/improvements by many others.  Please refer to  the
433       CONTRIBS  file  in  the  UnZip  source distribution for a more complete
434       list.
435
436Info-ZIP                     20 April 2009 (v3.0)                  ZIPINFO(1L)
437