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