Bash Cures Cancer
Learn the UNIX/Linux command line

Home     Man Pages     SpamDefeator


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 specification is a
	      wildcard, each matching file is processed in  an	order  deter-
	      mined by the operating system (or file system).  Only the file-
	      name 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 otherwise be  inter-
	      preted  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
	      suffix .zip is appended.	Note that self-extracting  ZIP	files
	      are  supported;  just  specify the .exe suffix (if any) explic-
	      itly.

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

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  headers	(-h),
	      trailers	(-t) and zipfile comments (-z), as well.  This option
	      may be useful in cases where the stored filenames are  particu-
	      larly 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 compression 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 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  compressed	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 zipfile headers in addition to the
	      compressed data.

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

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

DETAILED DESCRIPTION
       zipinfo	has  a number of modes, and its behavior can be rather diffi-
       cult 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 per-
       missions 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,  respec-
       tively; but if the file is encrypted, zipinfo notes this fact by capi-
       talizing 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 Macin-
       tosh.  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 exe-
       cutable (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.  Interpretation 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,	 shrinking, imploding, tokenizing (never pub-
       licly released), and deflating.	In addition, there are four levels of
       reducing (1 through 4); four types of imploding (4K or 8K sliding dic-
       tionary, and 2 or 3 Shannon-Fano trees); and four levels of  deflating
       (superfast,  fast,  normal,  maximum compression).  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

       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 zipfile  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  section
       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 com-
       mand: 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 environ-
       ment 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 override 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 individual 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, zipinfo'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 ZIPINFO_OPTS for
       VMS (where the symbol used to install zipinfo  as  a  foreign  command
       would  otherwise	 be confused with the environment variable), and ZIP-
       INFO for all other operating 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	diag-
       nostic  option (-v with no zipfile name) can be used to check the val-
       ues of all four possible unzip and zipinfo environment variables.

EXAMPLES
       To get a basic, short-format listing of the complete contents 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	 con-
       tents 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 globbing 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  footers  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 listing.  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 behav-
       ior 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 over-
       ride the default header and totals lines;  only	the  single  line  of
       information  about  the requested file will be printed.	This is intu-
       itively what one would expect when requesting information about a sin-
       gle  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 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  versions	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 systems, copy/rename the exe-
       cutable,	 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 inten-
       tional.

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),	zipcloak(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		     22 May 2004 (v2.41)		  ZIPINFO(1L)


UNIX/Linux commands referenced on this page:
  1. unzip
  2. file
  3. as
  4. link
  5. more
  6. info
  7. factor
  8. size
  9. at
  10. top
  11. date
  12. last
  13. time
  14. which
  15. zip
  16. host
  17. dir
  18. who
  19. install
  20. expand
  21. sort
  22. sed
  23. true
  24. refer