man pages section 1: User Commands

Exit Print View

Updated: July 2014

unzip (1)


unzip - chive


unzip  [-Z]  [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]]   file[.zip]
[file(s) ...]  [-x xfile(s) ...] [-d exdir]


Misc. Reference Manual Pages                            UNZIP(1L)

     unzip - list, test and extract compressed files in a ZIP ar-

     unzip  [-Z]  [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]]   file[.zip]
     [file(s) ...]  [-x xfile(s) ...] [-d exdir]

     unzip  will list, test, or extract files from a ZIP archive,
     commonly found on  MS-DOS  systems.   The  default  behavior
     (with  no  options) is to extract into the current directory
     (and subdirectories below it) all files from  the  specified
     ZIP  archive.  A companion program, zip(1L), creates ZIP ar-
     chives; both programs are compatible with  archives  created
     by  PKWARE's PKZIP and PKUNZIP for MS-DOS, but in many cases
     the program options or default behaviors differ.

          Path of the ZIP archive(s).  If the file  specification
          is  a  wildcard,  each matching file is processed in an
          order determined by the operating system (or file  sys-
          tem).   Only  the  filename can be a wildcard; the path
          itself cannot.  Wildcard  expressions  are  similar  to
          those  supported in commonly used Unix shells (sh, ksh,
          csh) 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 `^') fol-
               lows the left bracket, then the range  of  charac-
               ters within the brackets is complemented (that is,
               anything except the characters inside the brackets
               is  considered  a  match).   To specify a verbatim
               left bracket, the three-character sequence ``[[]''
               has to be used.

          (Be sure to quote any character that might otherwise be
          interpreted or modified by the operating  system,  par-
          ticularly  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 sup-
          ported, as with any other ZIP archive; just specify the
          .exe suffix (if any) explicitly.

Info-ZIP        Last change: 20 April 2009 (v6.0)               1

Misc. Reference Manual Pages                            UNZIP(1L)

          An optional list of archive members  to  be  processed,
          separated  by  spaces.   (VMS  versions  compiled  with
          VMSCLI defined must delimit files with commas  instead.
          See  -v  in OPTIONS below.)  Regular expressions (wild-
          cards) 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 sys-

     [-x xfile(s)]
          An optional list of archive members to be excluded from
          processing.  Since wildcard characters  normally  match
          (`/')  directory  separators  (for  exceptions  see the
          option -W), this option may  be  used  to  exclude  any
          files that are in subdirectories.  For example, ``unzip
          foo *.[ch] -x */*'' would extract all C source files in
          the  main  directory,  but  none in any subdirectories.
          Without the -x option, all C source files in all direc-
          tories within the zipfile would be extracted.

     [-d exdir]
          An  optional  directory  to which to extract files.  By
          default, all files and subdirectories are recreated  in
          the  current directory; the -d option allows extraction
          in an arbitrary directory (always assuming one has per-
          mission  to  write to the directory).  This option need
          not appear at the end of the command line; it  is  also
          accepted  before  the  zipfile  specification (with the
          normal options), immediately after the zipfile specifi-
          cation,  or between the file(s) and the -x option.  The
          option and directory may be  concatenated  without  any
          white  space between them, but note that this may cause
          normal shell behavior to be suppressed.  In particular,
          ``-d ~''  (tilde) is expanded by Unix C shells into the
          name of the  user's  home  directory,  but  ``-d~''  is
          treated  as a literal subdirectory ``~'' of the current

     Note that, in order to support obsolescent hardware, unzip's
     usage  screen is limited to 22 or 23 lines and should there-
     fore be considered only a reminder of the basic unzip syntax
     rather  than  an exhaustive list of all possible flags.  The
     exhaustive list follows:

     -Z   zipinfo(1L) mode.  If the first option on  the  command
          line  is -Z, the remaining options are taken to be zip-
          info(1L) options.  See the appropriate manual page  for
          a description of these options.

     -A   [OS/2,  Unix  DLL]  print  extended  help for the DLL's

Info-ZIP        Last change: 20 April 2009 (v6.0)               2

Misc. Reference Manual Pages                            UNZIP(1L)

          programming interface (API).

     -c   extract files to stdout/screen (``CRT'').  This  option
          is  similar  to  the  -p option except that the name of
          each file is printed as it is extracted, the -a  option
          is  allowed,  and  ASCII-EBCDIC conversion is automati-
          cally performed if appropriate.   This  option  is  not
          listed in the unzip usage screen.

     -f   freshen  existing files, i.e., extract only those files
          that already exist on disk and that are newer than  the
          disk copies.  By default unzip queries before overwrit-
          ing, but the -o option may  be  used  to  suppress  the
          queries.   Note  that under many operating systems, the
          TZ (timezone) environment variable  must  be  set  cor-
          rectly  in  order for -f and -u to work properly (under
          Unix the variable is usually set  automatically).   The
          reasons  for  this  are  somewhat subtle but have to do
          with the  differences  between  DOS-format  file  times
          (always  local  time)  and Unix-format times (always in
          GMT/UTC) and the necessity to compare the two.  A typi-
          cal TZ value is ``PST8PDT'' (US Pacific time with auto-
          matic adjustment for Daylight Savings Time or  ``summer

     -l   list  archive  files (short format).  The names, uncom-
          pressed file sizes and modification dates and times  of
          the  specified files are printed, along with totals for
          all  files  specified.   If  UnZip  was  compiled  with
          OS2_EAS  defined,  the -l option also lists columns for
          the sizes of stored OS/2 extended attributes (EAs)  and
          OS/2  access  control  lists  (ACLs).  In addition, the
          zipfile comment and individual file comments  (if  any)
          are  displayed.   If a file was archived from a single-
          case file system (for example, the old MS-DOS FAT  file
          system)  and  the  -L option was given, the filename is
          converted to lowercase and is  prefixed  with  a  caret

     -p   extract  files  to pipe (stdout).  Nothing but the file
          data is sent  to  stdout,  and  the  files  are  always
          extracted in binary format, just as they are stored (no

     -t   test archive files.  This option extracts  each  speci-
          fied file in memory and compares the CRC (cyclic redun-
          dancy check, an enhanced checksum) of the expanded file
          with the original file's stored CRC value.

     -T   [most OSes] set the timestamp on the archive(s) to that
          of the newest file in each one.   This  corresponds  to
          zip's -go option except that it can be used on wildcard

Info-ZIP        Last change: 20 April 2009 (v6.0)               3

Misc. Reference Manual Pages                            UNZIP(1L)

          zipfiles  (e.g.,  ``unzip  -T  \*.zip'')  and  is  much

     -u   update  existing  files  and create new ones if needed.
          This option  performs  the  same  function  as  the  -f
          option,  extracting  (with  query) files that are newer
          than those with the same name on disk, and in  addition
          it  extracts  those  files that do not already exist on
          disk.  See -f above  for  information  on  setting  the
          timezone properly.

     -v   list  archive files (verbose format) or show diagnostic
          version info.  This option has evolved and now  behaves
          as  both an option and a modifier.  As an option it has
          two purposes:  when a  zipfile  is  specified  with  no
          other options, -v lists archive files verbosely, adding
          to the basic -l info the compression method, compressed
          size, compression ratio and 32-bit CRC.  In contrast to
          most of the competing utilities, unzip removes  the  12
          additional  header  bytes of encrypted entries from the
          compressed size numbers.   Therefore,  compressed  size
          and  compression  ratio  figures are independent of the
          entry's encryption status and show the correct compres-
          sion  performance.  (The complete size of the encrypted
          compressed data stream for zipfile entries is  reported
          by  the more verbose zipinfo(1L) reports, see the sepa-
          rate manual.)  When no zipfile is specified  (that  is,
          the  complete  command is simply ``unzip -v''), a diag-
          nostic screen is printed.  In addition  to  the  normal
          header  with  release date and version, unzip lists the
          home Info-ZIP ftp site and where  to  find  a  list  of
          other  ftp and non-ftp sites; the target operating sys-
          tem for which it was compiled, as  well  as  (possibly)
          the hardware on which it was compiled, the compiler and
          version used, and the  compilation  date;  any  special
          compilation  options  that  might  affect the program's
          operation (see also DECRYPTION below); and any  options
          stored  in environment variables that might do the same
          (see ENVIRONMENT OPTIONS  below).   As  a  modifier  it
          works  in  conjunction with other options (e.g., -t) to
          produce more verbose or debugging output; this  is  not
          yet fully implemented but will be in future releases.

     -z   display only the archive comment.

     -a   convert text files.  Ordinarily all files are extracted
          exactly as they are stored (as ``binary'' files).   The
          -a  option causes files identified by zip as text files
          (those with the `t' label in zipinfo  listings,  rather
          than  `b')  to be automatically extracted as such, con-
          verting line endings, end-of-file  characters  and  the

Info-ZIP        Last change: 20 April 2009 (v6.0)               4

Misc. Reference Manual Pages                            UNZIP(1L)

          character  set itself as necessary.  (For example, Unix
          files use line feeds (LFs) for  end-of-line  (EOL)  and
          have  no end-of-file (EOF) marker; Macintoshes use car-
          riage returns (CRs) for EOLs;  and  most  PC  operating
          systems  use  CR+LF for EOLs and control-Z for EOF.  In
          addition, IBM mainframes and the Michigan Terminal Sys-
          tem  use EBCDIC rather than the more common ASCII char-
          acter set, and NT supports Unicode.)  Note  that  zip's
          identification  of  text  files is by no means perfect;
          some ``text'' files may actually  be  binary  and  vice
          versa.     unzip   therefore   prints   ``[text]''   or
          ``[binary]''  as  a  visual  check  for  each  file  it
          extracts  when  using  the  -a  option.  The -aa option
          forces all files to be extracted as text, regardless of
          the supposed file type.  On VMS, see also -S.

     -b   [general]  treat  all  files as binary (no text conver-
          sions).  This is a shortcut for ---a.

     -b   [Tandem] force the creation files  with  filecode  type
          180 ('C') when extracting Zip entries marked as "text".
          (On Tandem, -a is enabled by default, see above).

     -b   [VMS] auto-convert  binary  files  (see  -a  above)  to
          fixed-length,  512-byte  record  format.   Doubling the
          option (-bb) forces all files to be extracted  in  this
          format.  When  extracting  to standard output (-c or -p
          option in  effect),  the  default  conversion  of  text
          record delimiters is disabled for binary (-b) resp. all
          (-bb) files.

     -B   [when compiled with UNIXBACKUP defined] save  a  backup
          copy  of each overwritten file. The backup file is gets
          the name of the target file with a tilde and optionally
          a  unique  sequence  number  (up to 5 digits) appended.
          The sequence number is applied  whenever  another  file
          with the original name plus tilde already exists.  When
          used together with the "overwrite all" option -o,  num-
          bered backup files are never created. In this case, all
          backup files are named as the  original  file  with  an
          appended tilde, existing backup files are deleted with-
          out  notice.   This  feature  works  similarly  to  the
          default behavior of emacs(1) in many locations.

          Example:   the  old  copy  of  ``foo''  is  renamed  to

          Warning: Users should be aware that the -B option  does
          not  prevent  loss  of  existing data under all circum-
          stances.  For example, when unzip is run in  overwrite-
          all  mode,  an existing ``foo~'' file is deleted before
          unzip attempts to rename  ``foo''  to  ``foo~''.   When

Info-ZIP        Last change: 20 April 2009 (v6.0)               5

Misc. Reference Manual Pages                            UNZIP(1L)

          this  rename  attempt  fails  (because of a file locks,
          insufficient privileges, or  ...),  the  extraction  of
          ``foo~''  gets  cancelled,  but  the old backup file is
          already lost.  A similar scenario takes place when  the
          sequence  number  range  for numbered backup files gets
          exhausted (99999, or 65535  for  16-bit  systems).   In
          this  case,  the  backup file with the maximum sequence
          number is deleted and replaced by the new  backup  ver-
          sion without notice.

     -C   use  case-insensitive matching for the selection of ar-
          chive entries from the  command-line  list  of  extract
          selection  patterns.   unzip's  philosophy is ``you get
          what you ask for'' (this is also  responsible  for  the
          -L/-U change; see the relevant options below).  Because
          some file systems  are  fully  case-sensitive  (notably
          those under the Unix operating system) and because both
          ZIP archives and unzip itself are portable across plat-
          forms,  unzip's default behavior is to match both wild-
          card and literal filenames case-sensitively.  That  is,
          specifying  ``makefile''  on the command line will only
          match ``makefile'' in the archive, not ``Makefile''  or
          ``MAKEFILE''  (and  similarly  for  wildcard specifica-
          tions).  Since this does not correspond to the behavior
          of many other operating/file systems (for example, OS/2
          HPFS, which preserves mixed case but is  not  sensitive
          to it), the -C option may be used to force all filename
          matches to be case-insensitive.  In the example  above,
          all  three  files  would  then  match  ``makefile'' (or
          ``make*'', or similar).  The  -C  option  affects  file
          specs  in  both  the normal file list and the excluded-
          file list (xlist).

          Please note that the -C option does neither affect  the
          search  for  the zipfile(s) nor the matching of archive
          entries to existing files on the extraction path.  On a
          case-sensitive  file  system,  unzip  will never try to
          overwrite a  file  ``FOO''  when  extracting  an  entry

     -D   skip  restoration  of  timestamps  for extracted items.
          Normally, unzip tries to restore  all  meta-information
          for  extracted  items  that are supplied in the Zip ar-
          chive (and do not require privileges or impose a  secu-
          rity  risk).   By  specifying -D, unzip is told to sup-
          press restoration of timestamps for directories explic-
          itly  created  from  Zip  archive entries.  This option
          only applies to ports that support  setting  timestamps
          for  directories  (currently ATheOS, BeOS, MacOS, OS/2,
          Unix, VMS, Win32, for other  unzip  ports,  -D  has  no
          effect).   The duplicated option -DD forces suppression
          of timestamp  restoration  for  all  extracted  entries

Info-ZIP        Last change: 20 April 2009 (v6.0)               6

Misc. Reference Manual Pages                            UNZIP(1L)

          (files  and  directories).  This option results in set-
          ting the timestamps for all extracted  entries  to  the
          current time.

          On  VMS,  the default setting for this option is -D for
          consistency with the behaviour of  BACKUP:  file  time-
          stamps  are  restored, timestamps of extracted directo-
          ries are left at the current time.  To enable  restora-
          tion  of  directory  timestamps, the negated option --D
          should be specified.  On VMS, the  option  -D  disables
          timestamp  restoration  for  all  extracted Zip archive
          items.  (Here, a single -D on the command line combines
          with  the default -D to do what an explicit -DD does on
          other systems.)

     -E   [MacOS only] display contents of MacOS extra field dur-
          ing restore operation.

     -F   [Acorn only] suppress removal of NFS filetype extension
          from stored filenames.

     -F   [non-Acorn  systems  supporting  long  filenames   with
          embedded    commas,   and   only   if   compiled   with
          ACORN_FTYPE_NFS defined] translate filetype information
          from  ACORN RISC OS extra field blocks into a NFS file-
          type extension and  append  it  to  the  names  of  the
          extracted  files.  (When the stored filename appears to
          already have an appended NFS filetype extension, it  is
          replaced by the info from the extra field.)

     -i   [MacOS  only]  ignore  filenames  stored in MacOS extra
          fields. Instead, the most compatible filename stored in
          the generic part of the entry's header is used.

     -j   junk  paths.   The archive's directory structure is not
          recreated; all files are deposited  in  the  extraction
          directory (by default, the current one).

     -J   [BeOS only] junk file attributes.  The file's BeOS file
          attributes are not restored, just the file's data.

     -J   [MacOS only] ignore MacOS extra fields.  All  Macintosh
          specific  info  is skipped. Data-fork and resource-fork
          are restored as separate files.

     -K   [AtheOS, BeOS, Unix only] retain  SUID/SGID/Tacky  file
          attributes.   Without  this  flag, these attribute bits
          are cleared for security reasons.

     -L   convert to lowercase any  filename  originating  on  an
          uppercase-only  operating system or file system.  (This
          was unzip's default behavior in releases prior to 5.11;

Info-ZIP        Last change: 20 April 2009 (v6.0)               7

Misc. Reference Manual Pages                            UNZIP(1L)

          the new default behavior is identical to the old behav-
          ior with the -U option, which is now obsolete and  will
          be  removed  in  a  future  release.)  Depending on the
          archiver, files archived under single-case file systems
          (VMS, old MS-DOS FAT, etc.) may be stored as all-upper-
          case names; this  can  be  ugly  or  inconvenient  when
          extracting  to  a  case-preserving  file system such as
          OS/2 HPFS or a case-sensitive one such as  under  Unix.
          By  default  unzip  lists  and  extracts such filenames
          exactly as they're stored (excepting  truncation,  con-
          version  of  unsupported characters, etc.); this option
          causes the names of all files from certain  systems  to
          be  converted to lowercase.  The -LL option forces con-
          version of every filename to lowercase,  regardless  of
          the originating file system.

     -M   pipe  all  output  through an internal pager similar to
          the Unix more(1) command.  At the end of a screenful of
          output,  unzip  pauses  with a ``--More--'' prompt; the
          next screenful may be  viewed  by  pressing  the  Enter
          (Return) key or the space bar.  unzip 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,  unzip
          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 unzip assumes the
          height is 24 lines.

     -n   never  overwrite  existing  files.   If  a file already
          exists,  skip  the  extraction  of  that  file  without
          prompting.   By default unzip queries before extracting
          any file that already exists; the user  may  choose  to
          overwrite  only  the current file, overwrite all files,
          skip extraction of the current file, skip extraction of
          all existing files, or rename the current file.

     -N   [Amiga] extract file comments as Amiga filenotes.  File
          comments are created with the -c option of zip(1L),  or
          with  the -N option of the Amiga port of zip(1L), which
          stores filenotes as comments.

     -o   overwrite existing files without prompting.  This is  a
          dangerous  option,  so  use it with care.  (It is often
          used with -f, however, and is the only way to overwrite
          directory EAs under OS/2.)

     -P password
          use  password  to decrypt encrypted zipfile entries (if

Info-ZIP        Last change: 20 April 2009 (v6.0)               8

Misc. Reference Manual Pages                            UNZIP(1L)

          any).  THIS IS  INSECURE!   Many  multi-user  operating
          systems  provide  ways  for any user to see the current
          command line of any other  user;  even  on  stand-alone
          systems there is always the threat of over-the-shoulder
          peeking.  Storing the plaintext password as part  of  a
          command  line  in  an  automated  script is even worse.
          Whenever possible,  use  the  non-echoing,  interactive
          prompt  to  enter  passwords.   (And  where security is
          truly important, use strong encryption such  as  Pretty
          Good  Privacy instead of the relatively weak encryption
          provided by standard zipfile utilities.)

     -q   perform operations quietly (-qq = even quieter).  Ordi-
          narily  unzip  prints  the  names  of  the  files  it's
          extracting or testing, the extraction methods, any file
          or  zipfile comments that may be stored in the archive,
          and possibly a summary when finished with each archive.
          The  -q[q] options suppress the printing of some or all
          of these messages.

     -s   [OS/2, NT,  MS-DOS]  convert  spaces  in  filenames  to
          underscores.  Since all PC operating systems allow spa-
          ces in filenames, unzip by default  extracts  filenames
          with  spaces  intact (e.g., ``EA DATA. SF'').  This can
          be awkward, however, since MS-DOS  in  particular  does
          not gracefully support spaces in filenames.  Conversion
          of spaces to underscores can eliminate the  awkwardness
          in some cases.

     -S   [VMS]  convert  text  files  (-a,  -aa)  into Stream_LF
          record format, instead of the text-file default,  vari-
          able-length  record  format.  (Stream_LF is the default
          record format of VMS unzip. It is applied  unless  con-
          version (-a, -aa and/or -b, -bb) is requested or a VMS-
          specific entry is processed.)

     -U   [UNICODE_SUPPORT only] modify  or  disable  UTF-8  han-
          dling.   When  UNICODE_SUPPORT is available, the option
          -U forces unzip to escape all non-ASCII characters from
          UTF-8  coded filenames as ``#Uxxxx'' (for UCS-2 charac-
          ters, or ``#Lxxxxxx'' for unicode codepoints needing  3
          octets).   This option is mainly provided for debugging
          purpose when the fairly new UTF-8 support is  suspected
          to mangle up extracted filenames.

          The  option -UU allows to entirely disable the recogni-
          tion of UTF-8 encoded filenames.  The handling of file-
          name  codings  within unzip falls back to the behaviour
          of previous versions.

          [old, obsolete usage] leave filenames uppercase if cre-
          ated under MS-DOS, VMS, etc.  See -L above.

Info-ZIP        Last change: 20 April 2009 (v6.0)               9

Misc. Reference Manual Pages                            UNZIP(1L)

     -V   retain  (VMS)  file  version numbers.  VMS files can be
          stored  with  a   version   number,   in   the   format
          file.ext;##.   By  default  the ``;##'' version numbers
          are  stripped,  but  this  option  allows  them  to  be
          retained.   (On  file  systems  that limit filenames to
          particularly short lengths, the version numbers may  be
          truncated or stripped regardless of this option.)

     -W   [only   when   WILD_STOP_AT_DIR   compile-time   option
          enabled] modifies the pattern matching routine so  that
          both  `?'  (single-char  wildcard)  and `*' (multi-char
          wildcard) do not match the directory separator  charac-
          ter  `/'.  (The two-character sequence ``**'' acts as a
          multi-char wildcard that includes the directory separa-
          tor in its matched characters.)  Examples:

             "*.c" matches "foo.c" but not "mydir/foo.c"
             "**.c" matches both "foo.c" and "mydir/foo.c"
             "*/*.c" matches "bar/foo.c" but not "baz/bar/foo.c"
             "??*/*" matches "ab/foo" and "abc/foo"
                     but not "a/foo" or "a/b/foo"

          This  modified  behaviour  is equivalent to the pattern
          matching style used by the shells of  some  of  UnZip's
          supported  target  OSs  (one example is Acorn RISC OS).
          This option may not be available on systems  where  the
          Zip  archive's  internal  directory separator character
          `/' is allowed as regular character in native operating
          system filenames.  (Currently, UnZip uses the same pat-
          tern matching rules for both wildcard zipfile  specifi-
          cations and zip entry selection patterns in most ports.
          For systems allowing `/' as regular filename character,
          the  -W option would not work as expected on a wildcard
          zipfile specification.)

     -X   [VMS, Unix, OS/2, NT, Tandem] restore  owner/protection
          info  (UICs  and  ACL  entries)  under VMS, or user and
          group info (UID/GID)  under  Unix,  or  access  control
          lists  (ACLs) under certain network-enabled versions of
          OS/2 (Warp Server with IBM LAN Server/Requester 3.0  to
          5.0;  Warp Connect with IBM Peer 1.0), or security ACLs
          under Windows NT.  In most cases this will require spe-
          cial  system  privileges, and doubling the option (-XX)
          under NT instructs unzip to use privileges for  extrac-
          tion;  but  under Unix, for example, a user who belongs
          to several groups can restore files  owned  by  any  of
          those  groups, as long as the user IDs match his or her
          own.  Note that ordinary  file  attributes  are  always
          restored--this  option  applies only to optional, extra
          ownership info available  on  some  operating  systems.
          [NT's  access  control  lists do not appear to be espe-
          cially compatible with OS/2's, so no attempt is made at

Info-ZIP        Last change: 20 April 2009 (v6.0)              10

Misc. Reference Manual Pages                            UNZIP(1L)

          cross-platform portability of access privileges.  It is
          not clear under what conditions this would ever be use-
          ful anyway.]

     -Y   [VMS]  treat  archived  file  name  endings of ``.nnn''
          (where ``nnn'' is a decimal  number) as  if  they  were
          VMS  version  numbers  (``;nnn'').   (The default is to
          treat them as file types.)  Example:
                   "a.b.3" -> "a.b;3".

     -$   [MS-DOS, OS/2, NT] restore  the  volume  label  if  the
          extraction  medium  is  removable  (e.g.,  a diskette).
          Doubling the option  (-$$)  allows  fixed  media  (hard
          disks)  to  be  labelled  as  well.  By default, volume
          labels are ignored.

     -/ extensions
          [Acorn only] overrides the extension list  supplied  by
          Unzip$Ext   environment  variable.  During  extraction,
          filename extensions that match one of the items in this
          extension list are swapped in front of the base name of
          the extracted file.

     -:   [all but Acorn, VM/CMS, MVS, Tandem] allows to  extract
          archive  members  into locations outside of the current
          `` extraction  root  folder''.  For  security  reasons,
          unzip  normally  removes ``parent dir'' path components
          (``../'') from  the  names  of  extracted  file.   This
          safety  feature  (new  for version 5.50) prevents unzip
          from accidentally writing files to ``sensitive''  areas
          outside the active extraction folder tree head.  The -:
          option lets unzip switch back  to  its  previous,  more
          liberal behaviour, to allow exact extraction of (older)
          archives that used ``../'' components to create  multi-
          ple directory trees at the level of the current extrac-
          tion folder.   This  option  does  not  enable  writing
          explicitly  to  the root directory (``/'').  To achieve
          this, it is necessary  to  set  the  extraction  target
          folder  to  root  (e.g.  -d  / ).  However, when the -:
          option is specified, it is still possible to implicitly
          write  to  the  root  directory  by  specifying  enough
          ``../'' path components within the  zip  archive.   Use
          this option with extreme caution.

     -^   [Unix  only]  allow  control  characters  in  names  of
          extracted ZIP archive entries.  On Unix,  a  file  name
          may  contain  any  (8-bit)  character code with the two
          exception '/' (directory delimiter) and NUL (0x00,  the
          C  string  termination  indicator), unless the specific
          file system has more restrictive  conventions.   Gener-
          ally, this allows to embed ASCII control characters (or
          even sophisticated control sequences) in file names, at

Info-ZIP        Last change: 20 April 2009 (v6.0)              11

Misc. Reference Manual Pages                            UNZIP(1L)

          least  on  'native' Unix file systems.  However, it may
          be highly suspicious to make use  of  this  Unix  "fea-
          ture".  Embedded control characters in file names might
          have nasty side effects when  displayed  on  screen  by
          some  listing  code without sufficient filtering.  And,
          for ordinary users, it may be difficult to handle  such
          file  names  (e.g.  when trying to specify it for open,
          copy, move, or delete  operations).   Therefore,  unzip
          applies  a  filter  by default that removes potentially
          dangerous control characters from  the  extracted  file
          names.  The -^ option allows to override this filter in
          the rare case that embedded filename control characters
          are to be intentionally restored.

     -2   [VMS] force unconditionally conversion of file names to
          ODS2-compatible names.  The default is to  exploit  the
          destination  file  system, preserving case and extended
          file name characters on an ODS5 destination  file  sys-
          tem; and applying the ODS2-compatibility file name fil-
          tering on an ODS2 destination file system.

     unzip's default behavior may be modified via options  placed
     in  an  environment  variable.   This  can  be done with any
     option, but it is probably most useful with the -a, -L,  -C,
     -q, -o, or -n modifiers:  make unzip auto-convert text files
     by default, make it convert filenames from uppercase systems
     to  lowercase,  make it match names case-insensitively, make
     it quieter, or make it always overwrite or  never  overwrite
     files  as  it extracts them.  For example, to make unzip act
     as quietly as possible, only reporting errors, one would use
     one of the following commands:

       Unix Bourne shell:
          UNZIP=-qq; export UNZIP

       Unix C shell:
          setenv UNZIP -qq

       OS/2 or MS-DOS:
          set UNZIP=-qq

       VMS (quotes for lowercase):
          define UNZIP_OPTS "-qq"

     Environment  options  are,  in effect, considered to be just
     like any other command-line options, except  that  they  are
     effectively the first options on the command line.  To over-
     ride an environment option, one may use the  ``minus  opera-
     tor''  to  remove  it.  For instance, to override one of the
     quiet-flags in the example above, use the command

Info-ZIP        Last change: 20 April 2009 (v6.0)              12

Misc. Reference Manual Pages                            UNZIP(1L)

         unzip --q[other options] zipfile

     The first hyphen is the normal  switch  character,  and  the
     second  is  a  minus sign, acting on the q option.  Thus the
     effect here is to cancel one quantum of quietness.  To  can-
     cel both quiet flags, two (or more) minuses may be used:

         unzip -t--q zipfile
         unzip ---qt zipfile

     (the  two are equivalent).  This may seem awkward or confus-
     ing, but it is reasonably intuitive:  just ignore the  first
     hyphen  and  go  from there.  It is also consistent with the
     behavior of Unix nice(1).

     As suggested by the examples  above,  the  default  variable
     names  are  UNZIP_OPTS  for  VMS  (where  the symbol used to
     install unzip as a foreign command would otherwise  be  con-
     fused  with  the  environment  variable),  and UNZIP for all
     other operating systems.  For  compatibility  with  zip(1L),
     UNZIPOPT  is  also  accepted (don't ask).  If both UNZIP and
     UNZIPOPT  are  defined,  however,  UNZIP  takes  precedence.
     unzip's  diagnostic  option (-v with no zipfile name) can be
     used to check the values of all four possible unzip and zip-
     info environment variables.

     The  timezone  variable  (TZ) should be set according to the
     local timezone in order for the -f and -u  to  operate  cor-
     rectly.   See the description of -f above for details.  This
     variable  may  also  be  necessary  to  get  timestamps   of
     extracted   files   to   be   set   correctly.    The  WIN32
     (Win9x/ME/NT4/2K/XP/2K3) port of  unzip  gets  the  timezone
     configuration  from  the  registry, assuming it is correctly
     set in the Control Panel.  The TZ variable  is  ignored  for
     this port.

     Encrypted archives are fully supported by Info-ZIP software,
     but due to United States export restrictions, de-/encryption
     support might be disabled in your compiled binary.  However,
     since spring 2000, US export restrictions have  been  liber-
     ated,  and  our  source  archives  do now include full crypt
     code.  In case you need binary distributions with crypt sup-
     port  enabled, see the file ``WHERE'' in any Info-ZIP source
     or binary distribution for locations both inside and outside
     the US.

     Some  compiled versions of unzip may not support decryption.
     To check a version for crypt support, either attempt to test
     or extract an encrypted archive, or else check unzip's diag-
     nostic screen (see the -v option above) for ``[decryption]''
     as one of the special compilation options.

Info-ZIP        Last change: 20 April 2009 (v6.0)              13

Misc. Reference Manual Pages                            UNZIP(1L)

     As  noted above, the -P option may be used to supply a pass-
     word on the command line, but at a cost  in  security.   The
     preferred  decryption  method is simply to extract normally;
     if a zipfile member is encrypted, unzip will prompt for  the
     password  without echoing what is typed.  unzip continues to
     use the same password as long as it appears to be valid,  by
     testing a 12-byte header on each file.  The correct password
     will always check out against the header,  but  there  is  a
     1-in-256  chance  that  an  incorrect password will as well.
     (This is a security feature of the PKWARE zipfile format; it
     helps  prevent brute-force attacks that might otherwise gain
     a large speed advantage by testing only the header.)  In the
     case  that  an incorrect password is given but it passes the
     header test anyway, either an incorrect CRC will  be  gener-
     ated  for  the extracted data or else unzip will fail during
     the extraction because the ``decrypted'' bytes do  not  con-
     stitute a valid compressed data stream.

     If  the  first password fails the header check on some file,
     unzip will prompt for another password, and so on until  all
     files are extracted.  If a password is not known, entering a
     null password (that is, just a carriage return or ``Enter'')
     is  taken  as  a signal to skip all further prompting.  Only
     unencrypted files  in  the  archive(s)  will  thereafter  be
     extracted.   (In fact, that's not quite true; older versions
     of zip(1L) and zipcloak(1L) allowed null passwords, so unzip
     checks  each  encrypted  file  to  see  if the null password
     works.  This may result in ``false positives''  and  extrac-
     tion errors, as noted above.)

     Archives  encrypted with 8-bit passwords (for example, pass-
     words with accented European characters) may not be portable
     across  systems  and/or other archivers.  This problem stems
     from the use of multiple encoding methods for  such  charac-
     ters,  including Latin-1 (ISO 8859-1) and OEM code page 850.
     DOS PKZIP 2.04g uses the OEM code page; Windows  PKZIP  2.50
     uses Latin-1 (and is therefore incompatible with DOS PKZIP);
     Info-ZIP uses the OEM code page  on  DOS,  OS/2  and  Win3.x
     ports  but  ISO  coding  (Latin-1 etc.) everywhere else; and
     Nico Mak's WinZip 6.x does not allow 8-bit passwords at all.
     UnZip  5.3  (or newer) attempts to use the default character
     set first (e.g., Latin-1), followed  by  the  alternate  one
     (e.g., OEM code page) to test passwords.  On EBCDIC systems,
     if both of these fail, EBCDIC encoding will be tested  as  a
     last  resort.   (EBCDIC is not tested on non-EBCDIC systems,
     because there are no  known  archivers  that  encrypt  using
     EBCDIC   encoding.)   ISO  character  encodings  other  than
     Latin-1 are not supported.  The new addition of  (partially)
     Unicode (resp.  UTF-8) support in UnZip 6.0 has not yet been
     adapted to the encryption password handling  in  unzip.   On
     systems  that  use UTF-8 as native character encoding, unzip
     simply  tries  decryption  with  the  native  UTF-8  encoded

Info-ZIP        Last change: 20 April 2009 (v6.0)              14

Misc. Reference Manual Pages                            UNZIP(1L)

     password;  the  built-in  attempts  to check the password in
     translated encoding have not yet been adapted for UTF-8 sup-
     port and will consequently fail.

     To  use  unzip  to  extract  all members of the archive let- into the current directory and subdirectories below
     it, creating any subdirectories as necessary:

         unzip letters

     To  extract  all  members  of  into the current
     directory only:

         unzip -j letters

     To test, printing only a summary  message  indi-
     cating whether the archive is OK or not:

         unzip -tq letters

     To test all zipfiles in the current directory, printing only
     the summaries:

         unzip -tq \*.zip

     (The backslash before the asterisk is only required  if  the
     shell  expands  wildcards,  as  in Unix; double quotes could
     have  been  used  instead,  as  in   the   source   examples
     below.)  To  extract  to standard output all members of let- whose names end in  .tex,  auto-converting  to  the
     local  end-of-line  convention  and  piping  the output into

         unzip -ca letters \*.tex | more

     To extract the binary file paper1.dvi to standard output and
     pipe it to a printing program:

         unzip -p articles paper1.dvi | dvips

     To  extract  all  FORTRAN and C source files--*.f, *.c, *.h,
     and Makefile--into the /tmp directory:

         unzip "*.[fch]" Makefile -d /tmp

     (the double quotes are necessary only in Unix  and  only  if
     globbing is turned on).  To extract all FORTRAN and C source
     files, regardless of case (e.g., both *.c and *.C,  and  any
     makefile, Makefile, MAKEFILE or similar):

Info-ZIP        Last change: 20 April 2009 (v6.0)              15

Misc. Reference Manual Pages                            UNZIP(1L)

         unzip -C "*.[fch]" makefile -d /tmp

     To  extract  any such files but convert any uppercase MS-DOS
     or VMS names to lowercase and convert  the  line-endings  of
     all  of  the files to the local standard (without respect to
     any files that might be marked ``binary''):

         unzip -aaCL "*.[fch]" makefile -d /tmp

     To extract only newer versions of the files already  in  the
     current  directory,  without  querying (NOTE:  be careful of
     unzipping in one timezone a zipfile created in  another--ZIP
     archives  other  than those created by Zip 2.1 or later con-
     tain no timezone information, and a ``newer'' file  from  an
     eastern timezone may, in fact, be older):

         unzip -fo sources

     To  extract  newer versions of the files already in the cur-
     rent directory and to create any  files  not  already  there
     (same caveat as previous example):

         unzip -uo sources

     To  display a diagnostic screen showing which unzip and zip-
     info options are stored in  environment  variables,  whether
     decryption  support was compiled in, the compiler with which
     unzip was compiled, etc.:

         unzip -v

     In the last five examples, assume that UNZIP  or  UNZIP_OPTS
     is set to -q.  To do a singly quiet listing:

         unzip -l

     To do a doubly quiet listing:

         unzip -ql

     (Note  that the ``.zip'' is generally not necessary.)  To do
     a standard listing:

         unzip --ql
         unzip -l-q
         unzip -l--q
     (Extra minuses in options don't hurt.)

     The current maintainer, being a lazy  sort,  finds  it  very

Info-ZIP        Last change: 20 April 2009 (v6.0)              16

Misc. Reference Manual Pages                            UNZIP(1L)

     useful  to  define  a pair of aliases:  tt for ``unzip -tq''
     and ii for ``unzip -Z'' (or ``zipinfo'').  One may then sim-
     ply  type  ``tt zipfile'' to test an archive, something that
     is worth making a habit of  doing.   With  luck  unzip  will
     report  ``No  errors  detected  in  compressed  data of zip-,'' after which one may breathe a sigh of relief.

     The maintainer also finds it useful to set the  UNZIP  envi-
     ronment  variable to ``-aL'' and is tempted to add ``-C'' as
     well.  His ZIPINFO variable is set to ``-z''.

     The exit status (or error level) approximates the exit codes
     defined  by PKWARE and takes on the following values, except
     under VMS:

          0    normal; no errors or warnings detected.

          1    one or more warning errors were  encountered,  but
               processing  completed  successfully  anyway.  This
               includes zipfiles where  one  or  more  files  was
               skipped  due  to unsupported compression method or
               encryption with an unknown password.

          2    a  generic  error  in  the  zipfile   format   was
               detected.   Processing may have completed success-
               fully anyway;  some  broken  zipfiles  created  by
               other archivers have simple work-arounds.

          3    a severe error in the zipfile format was detected.
               Processing probably failed immediately.

          4    unzip was unable to allocate  memory  for  one  or
               more buffers during program initialization.

          5    unzip  was  unable to allocate memory or unable to
               obtain a tty to read the decryption password(s).

          6    unzip was unable to allocate memory during  decom-
               pression to disk.

          7    unzip was unable to allocate memory during in-mem-
               ory decompression.

          8    [currently not used]

          9    the specified zipfiles were not found.

          10   invalid options  were  specified  on  the  command

          11   no matching files were found.

Info-ZIP        Last change: 20 April 2009 (v6.0)              17

Misc. Reference Manual Pages                            UNZIP(1L)

          50   the disk is (or was) full during extraction.

          51   the  end of the ZIP archive was encountered prema-

          80   the user aborted unzip prematurely with  control-C
               (or similar)

          81   testing  or extraction of one or more files failed
               due to unsupported compression methods  or  unsup-
               ported decryption.

          82   no  files  were  found due to bad decryption pass-
               word(s).  (If even one file is  successfully  pro-
               cessed, however, the exit status is 1.)

     VMS interprets standard Unix (or PC) return values as other,
     scarier-looking things, so unzip instead maps them into VMS-
     style  status codes.  The current mapping is as follows:   1
     (success) for normal exit, 0x7fff0001  for  warning  errors,
     and (0x7fff000? + 16*normal_unzip_exit_status) for all other
     errors, where the `?' is 2 (error) for unzip values 2,  9-11
     and  80-82, and 4 (fatal error) for the remaining ones (3-8,
     50, 51).  In addition, there  is  a  compilation  option  to
     expand upon this behavior:  defining RETURN_CODES results in
     a human-readable explanation of what the error status means.

     Multi-part  archives  are  not yet supported, except in con-
     junction with zip.  (All parts must be concatenated together
     in  order,  and then ``zip -F'' (for zip 2.x) or ``zip -FF''
     (for zip 3.x) must be performed on the concatenated  archive
     in order to ``fix'' it.  Also, zip 3.0 and later can combine
     multi-part (split) archives into a combined single-file  ar-
     chive  using  ``zip  -s- inarchive -O outarchive''.  See the
     zip 3 manual page for more information.)   This  will  defi-
     nitely be corrected in the next major release.

     Archives  read  from  standard  input are not yet supported,
     except with funzip (and then only the first  member  of  the
     archive can be extracted).

     Archives  encrypted  with  8-bit  passwords (e.g., passwords
     with accented  European  characters)  may  not  be  portable
     across  systems  and/or other archivers.  See the discussion
     in DECRYPTION above.

     unzip's -M (``more'') option  tries  to  take  into  account
     automatic wrapping of long lines. However, the code may fail
     to detect the correct wrapping locations. First, TAB charac-
     ters  (and  similar  control  sequences)  are not taken into
     account, they are handled as ordinary printable  characters.

Info-ZIP        Last change: 20 April 2009 (v6.0)              18

Misc. Reference Manual Pages                            UNZIP(1L)

     Second,  depending on the actual system / OS port, unzip may
     not detect the true screen geometry but rather rely on "com-
     monly  used"  default  dimensions.   The correct handling of
     tabs would require the implementation of  a  query  for  the
     actual tabulator setup on the output console.

     Dates,  times  and permissions of stored directories are not
     restored except under Unix. (On Windows NT  and  successors,
     timestamps are now restored.)

     [MS-DOS] When extracting or testing files from an archive on
     a defective floppy diskette, if the ``Fail'' option is  cho-
     sen  from  DOS's ``Abort, Retry, Fail?'' message, older ver-
     sions of unzip may hang  the  system,  requiring  a  reboot.
     This problem appears to be fixed, but control-C (or control-
     Break) can still be used to terminate unzip.

     Under DEC Ultrix, unzip would sometimes fail  on  long  zip-
     files  (bad  CRC, not always reproducible).  This was appar-
     ently due either to a hardware  bug  (cache  memory)  or  an
     operating  system  bug  (improper handling of page faults?).
     Since Ultrix has been abandoned in  favor  of  Digital  Unix
     (OSF/1), this may not be an issue anymore.

     [Unix]  Unix  special  files  such  as  FIFO  buffers (named
     pipes), block devices and character devices are not restored
     even if they are somehow represented in the zipfile, nor are
     hard-linked files relinked.  Basically the only  file  types
     restored  by  unzip  are regular files, directories and sym-
     bolic (soft) links.

     [OS/2] Extended attributes for existing directories are only
     updated if the -o (``overwrite all'') option is given.  This
     is a limitation of the operating system; because directories
     only have a creation time associated with them, unzip has no
     way to determine whether the stored attributes are newer  or
     older  than those on disk.  In practice this may mean a two-
     pass approach is required:  first unpack  the  archive  nor-
     mally  (with or without freshening/updating existing files),
     then overwrite just the directory entries (e.g., ``unzip  -o
     foo */'').

     [VMS]  When extracting to another directory, only the [.foo]
     syntax is accepted for the -d option; the  simple  Unix  foo
     syntax  is  silently  ignored  (as  is  the  less common VMS
     foo.dir syntax).

     [VMS] When the file being extracted already exists,  unzip's
     query  only  allows skipping, overwriting or renaming; there
     should additionally be a choice for creating a  new  version
     of  the file.  In fact, the ``overwrite'' choice does create
     a new  version;  the  old  version  is  not  overwritten  or

Info-ZIP        Last change: 20 April 2009 (v6.0)              19

Misc. Reference Manual Pages                            UNZIP(1L)


     See   attributes(5)   for   descriptions  of  the  following

     |Availability   | compress/unzip   |
     |Stability      | Volatile         |
     funzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), zipinfo(1L),
     zipnote(1L), zipsplit(1L)

     The Info-ZIP home page is currently at
     or .

     The primary Info-ZIP authors (current semi-active members of
     the Zip-Bugs workgroup) are:  Ed Gordon (Zip, general  main-
     tenance,  shared  code, Zip64, Win32, Unix, Unicode); Chris-
     tian Spieler (UnZip maintenance coordination,  VMS,  MS-DOS,
     Win32,  shared  code,  general Zip and UnZip integration and
     optimization); Onno van der Linden (Zip); Mike White (Win32,
     Windows  GUI,  Windows  DLLs); Kai Uwe Rommel (OS/2, Win32);
     Steven M. Schweda (VMS, Unix, support of new features); Paul
     Kienitz  (Amiga, Win32, Unicode); Chris Herborth (BeOS, QNX,
     Atari); Jonathan Hudson  (SMS/QDOS);  Sergio  Monesi  (Acorn
     RISC  OS);  Harald  Denker (Atari, MVS); John Bush (Solaris,
     Amiga); Hunter Goatley  (VMS,  Info-ZIP  Site  maintenance);
     Steve  Salisbury  (Win32);  Steve  Miller  (Windows CE GUI),
     Johnny Lee (MS-DOS, Win32, Zip64); and  Dave  Smith  (Tandem

     The  following  people  were  former members of the Info-ZIP
     development group and provided major  contributions  to  key
     parts  of  the  current  code:  Greg  ``Cave  Newt'' Roelofs
     (UnZip, unshrink decompression); Jean-loup  Gailly  (deflate
     compression); Mark Adler (inflate decompression, fUnZip).

     The  author of the original unzip code upon which Info-ZIP's
     was based is Samuel H. Smith; Carl  Mascott  did  the  first
     Unix  port; and David P.  Kirschbaum organized and led Info-
     ZIP in its early days with Keith Petersen hosting the origi-
     nal  mailing  list  at  WSMR-SimTel20.   The  full  list  of

Info-ZIP        Last change: 20 April 2009 (v6.0)              20

Misc. Reference Manual Pages                            UNZIP(1L)

     contributors to UnZip has grown quite large; please refer to
     the  CONTRIBS  file  in  the UnZip source distribution for a
     relatively complete version.

     v1.2   15 Mar 89   Samuel H. Smith
     v2.0    9 Sep 89   Samuel H. Smith
     v2.x   fall 1989   many Usenet contributors
     v3.0    1 May 90   Info-ZIP (DPK, consolidator)
     v3.1   15 Aug 90   Info-ZIP (DPK, consolidator)
     v4.0    1 Dec 90   Info-ZIP (GRR, maintainer)
     v4.1   12 May 91   Info-ZIP
     v4.2   20 Mar 92   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.0   21 Aug 92   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.01  15 Jan 93   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.1    7 Feb 94   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.11   2 Aug 94   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.12  28 Aug 94   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.2   30 Apr 96   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.3   22 Apr 97   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.31  31 May 97   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.32   3 Nov 97   Info-ZIP (Zip-Bugs subgroup, GRR)
     v5.4   28 Nov 98   Info-ZIP (Zip-Bugs subgroup, SPC)
     v5.41  16 Apr 00   Info-ZIP (Zip-Bugs subgroup, SPC)
     v5.42  14 Jan 01   Info-ZIP (Zip-Bugs subgroup, SPC)
     v5.5   17 Feb 02   Info-ZIP (Zip-Bugs subgroup, SPC)
     v5.51  22 May 04   Info-ZIP (Zip-Bugs subgroup, SPC)
     v5.52  28 Feb 05   Info-ZIP (Zip-Bugs subgroup, SPC)
     v6.0   20 Apr 09   Info-ZIP (Zip-Bugs subgroup, SPC)

     This  software  was   built   from   source   available   at    The  original
     community  source  was  downloaded   from

     Further  information about this software can be found on the
     open   source   community   website   at

Info-ZIP        Last change: 20 April 2009 (v6.0)              21