unzip -Z [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...]
最后的三个字段分别是文件的修改日期和时间,还有文件名.文件名的大小写是区分的,这样来自MS-DOS PKZIP的压缩文件总是被大写.如果被压缩的文件存储了路径名,也将被看作是文件名的一部分而被显示.
第二,三个字段表示了文件是在 Unix 下以 1.9 版的 zip 压缩的.由于它来自 Unix ,行开头的文件的存取权限以Unix 格式输出.压缩前的文件大小(本例中为2802)在第四个字段中给出.
第五个字段包含了两个字符,它们中的每个都能取若干个值.第一个字符可能是`t'或者`b',相应地表示文件是文本的或者是二进制的;但是如果文件被加密,zipinfo 通过大写字符(`T'或者`B')来表示.第二个字符可以取四个值,它依赖于是否存在一个本地的头信息并且/或者一个和那个文件相关的 "额外" 字段(详细解释参看 PKWare's APPNOTE.TXT,它基本上类似于ANSI C中的pragmas,它们提供了一种包含非标准信息的标准方法).如果两者都不存在,该字段为连字符(`-');如果有一个扩展的本地头信息但是没有额外字段,则为`l';反之为`x';如果都存在,则为`X'.这样上面示例中的文件(很可能)是一个未被加密的文本文件,并且没有额外字段和本地头信息与之相关联.下面的例子则是一个有额外信息的二进制文件.
额外的字段的使用是为了满足不同的需要(参看下面选项 -v 的讨论)包括这里讨论所假设的情况:VMS 文件的存储特性. 一些其他的可能是为了处理操作系统(这是一个误解,实际应该是文件系统更恰当些)包括 OS/2 或者使用高性能文件系统 (HPFS) 的 NT ,MS_DOS, OS/2 或者使用文件获取表 (FAT) 作为文件系统的 NT, Macintosh.它们被如下所标示:
前两个例子的文件的属性以类Unix的格式表示,其中七个子域分别表示该文件是否(1)是一个目录,(2)是可读的(总是)(3)是可写的,(4)是可执行的(猜测建立在假定它们的扩展名为.exe, .com, .bat, .cmd和.btm 的基础上)(5)有它的归档位设置,(6)是隐藏的和(7)是一个系统文件.由于一些 Macintosh 归档工具不存储任何档案信息, Macintosh 文件的解释是不可信的.
最后,第六个字段表示了压缩使用的方法和子方法. 现在已知有六种方法:存储法(storing)(无压缩),缩减法(reducing),收缩法(shrinking), 内爆法(impoding),标志法(tokenizing)(从来没有公开发布)和紧缩法(deflating). 更进一步,缩减法有4种级别(从1到4);内爆法有4种类型(4K或者8K的滑动字典,和2或者3个Shannon-Fano树);紧缩法也有4个层次(超快,快,正常,最大压缩).zipinfo 用如下的方式代表了这些方法和子方法: stor;re:1, re:2, etc.; shrk; i4:2, i8:3, etc.; tokn; and defS, defF, defN, and defX.
中长和长列表格式显示几乎和短列表相同,除去它们附加了文件压缩方面的信息.中长格式以百分数列出了文件压缩率,它代表了被节省的空间:
在这个例子中,文件以超过5倍的比例被压缩;压缩后的数据大小仅为原是大小的19%.长格式则以以字节大小为单位的压缩后文件大小表示该信息:
增加 -T 选项则将文件的日期和时间以点分格式输出:
注意到因为 MS-DOS 格式中用来存储文件时间的限制,第二个域总是取值为最近的偶数秒.对于 Unix 文件 zip(1L) 和 unzip 很可能在它们的下一个版本中改变.
作为单独文件信息的补充,默认的输出还包括头和末信息行:
头行给出了档案的名字,它的总大小,总的文件数;末行给出了所列出的文件数,它们总的解压后的大小和它们总的解压前的大小(不包含任何的 zip 内部的部分).但是,如果指定一个或者若干的文件,则头信息和末信息将不会列出.这种行为与Unix中的 ``ls -l'' 类似;可以通过明确指定 -h h或者 -t 选项强制显示.
在这种情况下,由于 -h 或 -t (或同时)而没有其他选项意味着只有头信息或者末信息(或同时)被列出,列表的格式同样需要明确地指定.对此可参看下面 "示例 EXAMPLES" 部分获得这个无意义的半智能化的转化.
冗余的列表显示内容大多数都是自解释的.它还列出了文件和档案文件的描述,如果有的话,还列出所有存储在额外域中的类型和字节数.当前已知的额外域的类型包括 PKWARE 的认证(``AV'')信息;OS/2 扩展属性;VMS 文件系统信息,PLWARE 和 Info-ZIP 的版本; Macintosh 的resource forks;Acorn/Archimedes SparkFS 信息等等.(对于OS/2的扩展属性(压缩文件额外域中最常用的部分) zipinfo 报告的 EAs 的存储大小可能与 OS/2 使用 dir 命令给出得结果不一致:OS/2 总是以16位格式输出字节数,而 zipinfo 总是以32位存储输出.)
默认的输出列表格式,正如上述描述的,粗略地对应于 "zipinfo -hst" 命令(除非指定一个单独的压缩文件). 一个偏爱长输出格式 (-l) 的用户能够使用zipinfo的环境变量来改变默认的运作:
另外,如果用户不喜欢末行信息,zipinfo 的"反选项"的概念可以用来覆盖默认的总结行信息.这可以通过在不想使用的选项前加上减号实现:例如,,在这个例子中可以使用``-l-t'' 或者 ``--tl'' .第一个连字符是规则开关符,而`t'之前的那个是减号.连续使用两个连字符看起来有些笨拙.但是从直觉出发并非无意义:只用忽略第一个连字符并从此开始.它同样和Unix命令中的 nice(1) 相一致.
正如上面所提到的,对于VMS默认的环境变量是ZIPINFO_OPTS(否则将作为一个安装 zipinfo 的外来命令和环境变量相混淆),而对于其它的操作系统则是ZIPINFO.为了与zip(1L) 兼容,ZIPINFOOPT也被接受(不要问为什么).如果ZIPINFO和ZIPINFOOPT均被定义,则ZIPINFO优先. unzip 的诊断选项(-v 且没有压缩文件名)能够用来检查所有的四个可能的 unzip 和 zipinfo 环境变量.
zipinfo storage
要获得一个基本的,长格式(非冗余)的,包含头末行信息的列表,用 -l:
zipinfo -l storage
要获得一个档案的完整内容,并且不包含头末行信息,可以使用 -h 和 -t 的反选项,也可以明确指定显示内容:
zipinfo --h-t storage zipinfo storage \*
(这里的反斜杠 (backslash `') 只是在 shell 会将 `*' 通配符扩展时才必要,正如在 Unix 中双引号扩起来的星号将会全局有效).如果要默认关闭所有的行显示,可以使用环境变量(这里假设是C shell):
setenv ZIPINFO --t zipinfo storage
要获得第一个例子的完整的,短格式的列表输出,如果环境变量已经象前面的那样设置好了,就需要明确指定-s 选项,因为 -t 选项本身只表示输出末行信息:
setenv ZIPINFO --t zipinfo -t storage [only totals line] zipinfo -st storage [full listing]
-s 选项和 -m 和 -l, 选项一样,默认情况下包含了头末行信息,除非另外指定,因为规定不显示末行信息的环境变量较之于默认的 -s 选项的优先权更高,因此为了得到完整的列表输出,就需要明确指定 -t 选项.没有什么(环境变量)与头信息相关连,因此 -s 选项就足够了.请注意当使用 -h 和 -t 选项的时候,将不显示任何默认的文件列表;只显示头和/或末信息.在使用一个通配符作为 zipinfo 的参数的时候,这种模式是有用的;所有文件的内容只用一个命令就归纳出了.
要以中长格式列出档案中的一个单独文件的信息,只用明确指定文件名就可以了:
zipinfo -m storage unshrink.c
指定任何一个档案成员的文件名,就象在本例一样,将不再显示默认的头末信息;只有显示特定文件信息的那行将被输出.当要获得某个单独的文件的信息的时候这种模式符合直觉.对于多个文件的情形,知道总共的压缩前后的文件的大小常是有用的;在这种情况下 -t 选项常需要明确指定:
zipinfo -mt storage "*.[ch]" Mak\*
为了获得一个ZIP档案的完全信息,可使用冗余选项.如果操作系统允许的话把输出重定向至一个过滤器例如Unix中的more(1) 通常是明智之举:
zipinfo -v storage | more
最后,为了查看档案中最近修改的文件,可使用 -T 选项配合外部的排序程序比如 Unix 中的 sort(1) (还有这个例子中的 tail(1) ):
zipinfo -T storage | sort -n +6 | tail -15
-n 选项告诉 sort(1) 以数字大小排序而不是 ASCII 顺序, +6 选项意为以第一个后面的第六个字段排序(也就是说是第七个字段).这里假定是默认的短格式输出;如果使用了 -m 或者 -l 选项,则正确的 sort(1) 选项将是 +7.tail(1) 命令除去最后15行以外的所有内容.以后的版本的 zipinfo 可能会集成日期/时间和文件名的排序于内建的选项.
zipinfo的按列输出的模式是没有必要那么复杂的,应进行简化(这里并不是说将会的到简化).
http://www.info-zip.org/pub/infozip/或
ftp://ftp.info-zip.org/pub/infozip/ .