1 ZIPINFO(1L) ZIPINFO(1L)
4 zipinfo - list detailed information about a ZIP archive
7 zipinfo [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...]
9 unzip -Z [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...]
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.
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:
32 * matches a sequence of 0 or more characters
34 ? matches exactly 1 character
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
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.
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.
63 An optional list of archive members to be excluded from process-
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.
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-
76 -s list zipfile info in short Unix ``ls -l'' format. This is the
77 default behavior; see below.
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.
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.
87 -v list zipfile information in verbose, multi-page format.
89 -h list header line. The archive name, actual size (in bytes) and
90 total number of files is printed.
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
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.
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-
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
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.
132 -z include the archive comment (if any) in the listing.
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:
139 -rw-rws--- 1.9 unx 2802 t- defX 11-Aug-91 13:48 perms.2660
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
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.
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
169 RWD,R,R 0.9 vms 168 Bx shrk 9-Aug-91 19:15 perms.0644
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:
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
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.
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.
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'':
208 -rw-rws--- 1.5 unx 2802 t- 81% defX 11-Aug-91 13:48 perms.2660
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:
214 -rw-rws--- 1.5 unx 2802 t- 538 defX 11-Aug-91 13:48 perms.2660
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.
220 Adding the -T option changes the file date and time to decimal format:
222 -rw-rws--- 1.5 unx 2802 t- 538 defX 910811.134804 perms.2660
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.
229 In addition to individual file information, a default zipfile listing
230 also includes header and trailer lines:
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%
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.
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.)
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.
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.
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:
286 ZIPINFO=-l; export ZIPINFO
294 VMS (quotes for lowercase):
295 define ZIPINFO_OPTS "-l"
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).
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.
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:
323 To produce a basic, long-format listing (not verbose), including header
324 and totals lines, use -l:
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
332 zipinfo --h-t storage
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
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:
350 zipinfo -t storage [only totals line]
351 zipinfo -st storage [full listing]
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.
364 To list information on a single file within the archive, in medium for-
365 mat, specify the filename explicitly:
367 zipinfo -m storage unshrink.c
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:
376 zipinfo -mt storage "*.[ch]" Mak\*
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:
382 zipinfo -v storage | more
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):
388 zipinfo -T storage | sort -nr -k 7 | sed 15q
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
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.
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-
417 zipinfo's listing-format behavior is unnecessarily complex and should
418 be simplified. (This is not to say that it will be.)
421 ls(1), funzip(1L), unzip(1L), unzipsfx(1L), zip(1L), zipcloak(1L), zip-
422 note(1L), zipsplit(1L)
425 The Info-ZIP home page is currently at
426 http://www.info-zip.org/pub/infozip/
428 ftp://ftp.info-zip.org/pub/infozip/ .
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
436 Info-ZIP 20 April 2009 (v3.0) ZIPINFO(1L)