Zcat - Linux命令 - UNIX命令

名称

gzip,gunzip,zcat - 压缩或扩展文件

概要

gzip [ -acdfhlLnNrtvV19 ] [ -S后缀 ] [ 名称... ]
gunzip [ -acfhlLnNrtvV ] [ -S后缀 ] [ 名称... ]
zcat [ -fhLV ] [ 名字... ]

描述

Gzip使用Lempel-Ziv编码(LZ77)缩小了指定文件的大小。 只要有可能,每个文件都由扩展名为.gz的文件替换同时保持相同的所有权模式,访问和修改时间。 (VMS的默认扩展名是-gz ,MSDOS的是z ,OS / 2 FAT,Windows NT FAT和Atari)。如果没有指定文件,或者文件名是“ - ”,则标准输入压缩为标准输出。 Gzip只会尝试压缩常规文件。 特别是,它会忽略符号链接。

如果文件系统的压缩文件名太长, gzip会截断它。 Gzip只会截取长度超过3个字符的部分文件名。 (一个零件由点分隔)如果名称仅由小零件组成,则最长的零件会被截断。 例如,如果文件名仅限于14个字符,gzip.msdos.exe会压缩为gzi.msd.exe.gz. 在文件名长度没有限制的系统上,名称不会被截断。

默认情况下, gzip保留压缩文件中的原始文件名和时间戳。 这些在使用-N选项解压缩文件时使用。 这在压缩文件名被截断时或文件传输后未保留时间戳时非常有用。

使用gzip -dgunzipzcat可将压缩文件恢复到其原始格式 如果保存在压缩文件中的原始名称不适合其文件系统,则会从原始名称构建一个新名称以使其合法。

gunzip在其命令行上获取文件列表,并用没有原始扩展名的未压缩文件替换名称以.gz,-gz,.z,-z,_z或.Z结尾并以正确幻数开头的每个文件。 gunzip也分别认可特殊扩展名.tgz.taz作为.tar.gz.tar.Z的简写。 压缩时, gzip在必要时使用.tgz扩展名,而不是截断带.tar扩展名的文件。

gunzip目前可以解压缩由gzip,zip,compress,compress -Hpack创建的文件 输入格式的检测是自动的。 当使用前两种格式时, gunzip检查32位CRC。 对于包装,gunzip会检查未压缩的长度。 标准压缩格式的设计不是为了进行一致性检查。 然而gunzip有时能够检测到一个坏的.Z文件。 如果解压缩.Z文件时出现错误,请不要认为.Z文件正确无误,因为标准解压缩不会报错。 这通常意味着标准解压缩不会检查其输入,并且很高兴地生成垃圾输出。 SCO压缩-H格式(lzh压缩方法)不包含CRC,但也允许进行一些一致性检查。

只有在使用'通货紧缩'方法压缩单个成员时,由zip创建的文件才可以由gzip解压缩。 此功能仅用于帮助将tar.zip文件转换为tar.gz格式。 要提取几个成员的zip文件,请使用unzip而不是gunzip。

zcatgunzip -c相同 (在某些系统上,可以将zcat安装为gzcat以保留原始链接进行压缩。) zcat在命令行或其标准输入上解压缩一列文件,并将未压缩的数据写入标准输出。 zcat将解压缩具有正确幻数的文件,不管它们是否具有.gz后缀。

Gzip使用zip和PKZIP中使用的Lempel-Ziv算法。 获得的压缩量取决于输入的大小和常见子字符串的分布。 通常,源代码或英文等文本会减少60-70%。 压缩一般比LZW(如压缩中使用的),霍夫曼编码(如包中使用的)或自适应霍夫曼编码( 紧凑 )所实现的好得多。

压缩始终执行,即使压缩文件略大于原始文件。 最坏情况下的扩展是gzip文件头的几个字节,每32K块加上5个字节,或者大文件的扩展率为0.015%。 请注意,使用的磁盘块的实际数量几乎不会增加。 gzip在压缩或解压缩时保留文件的模式,所有权和时间戳。

OPTIONS

-a --ascii

ASCII文本模式:使用本地约定转换行尾。 该选项仅在某些非Unix系统上受支持。 对于MSDOS,压缩时CR LF转换为LF,解压缩时LF转换为CR LF。

-c --stdout --to-stdout

在标准输出上写输出; 保持原始文件不变。 如果有多个输入文件,则输出由一系列独立压缩的成员组成。 要获得更好的压缩效果,请在压缩它们之前连接所有输入文件。

-d - 解压缩--uncompress

解压缩。

-f --force

即使文件有多个链接或相应的文件已存在,或者压缩数据从终端读取或写入终端,也可强制压缩或解压缩。 如果输入数据的格式不是gzip可识别的格式并且同时给出了选项--stdout,则将输入数据复制到标准输出中:let zcat表现为cat。 如果没有给出-f ,并且没有在后台运行,则gzip会提示验证现有文件是否应该被覆盖。

-h - 帮助

显示帮助屏幕并退出。

-l --list

对于每个压缩文件,列出以下字段:


压缩大小:压缩文件的大小
未压缩大小:未压缩文件的大小
比例:压缩比例(如果未知,则为0.0%)
uncompressed_name:未压缩文件的名称

对于非gzip格式的文件(如压缩的.Z文件),未压缩的大小为-1。 要获得这种文件的未压缩大小,您可以使用:


zcat file.Z | wc -c

结合--verbose选项,还会显示以下字段:


方法:压缩方法
crc:未压缩数据的32位CRC
日期和时间:未压缩文件的时间戳

目前支持的压缩方法有deflate,compress,lzh(SCO compress -H)和pack。 对于不是gzip格式的文件,crc是以ffffffff的形式给出的。

使用--name,未压缩的名称,日期和时间是存储在压缩文件中的文件(如果存在)。

使用--verbose时,还会显示所有文件的大小总计和压缩比率,除非某些大小未知。 使用--quiet,标题和总计行不显示。

-L - 许可证

显示gzip许可证并退出。

-n - 无名

压缩时,默认情况下不保存原始文件名和时间戳。 (如果名称必须被截断,则始终保存原始名称。)解压缩时,不要恢复原始文件名(如果存在)(只删除压缩文件名中的gzip后缀),并且如果存在则不要恢复原始时间戳(从压缩文件中复制)。 此选项是解压缩时的默认选项。

-N - 名称

压缩时,请始终保存原始文件名和时间戳; 这是默认值。 解压缩时,恢复原始文件名和时间戳(如果存在)。 此选项在文件名长度有限或系统文件传输后时间戳丢失的系统上非常有用。

-q - 安静

禁止所有警告。

-r - 递归

递归地旅行目录结构。 如果命令行中指定的任何文件名都是目录,则gzip将下载到该目录中并压缩它在其中找到的所有文件(或在gunzip中解压缩它们)。

-S .suf --suffix .suf

使用后缀.suf而不是.gz。 可以给出任何后缀,但应避免使用.z和.gz以外的后缀,以避免文件传输到其他系统时出现混淆。 null后缀强制gunzip尝试对所有给定文件进行解压缩,而不管后缀如何:


gunzip -S“”*(*。*用于MSDOS)

以前版本的gzip使用.z后缀。 这被改变以避免与 (1)的冲突。

-t --test

测试。 检查压缩文件的完整性。

-v - 详细

详细。 显示压缩或解压缩的每个文件的名称和缩减百分比。

-V - 版本

版。 显示版本号和编译选项,然后退出。

- #--fast - best

使用指定的数字#调整压缩速度,其中-1--fast表示最快的压缩方法(较少压缩),- 9--best表示最慢的压缩方法(最佳压缩)。 默认的压缩级别是-6 (即,以速度为代价偏向于高压缩)。

高级用法

多个压缩文件可以连接在一起。 在这种情况下, gunzip会立即提取所有成员。 例如:


gzip -c file1> foo.gz
gzip -c file2 >> foo.gz

然后


gunzip -c foo

相当于


cat file1 file2

如果损坏.gz文件中的一个成员,其他成员仍然可以恢复(如果损坏的成员被删除)。 但是,您可以通过一次压缩所有成员来获得更好的压缩效果:


cat file1 file2 | gzip> foo.gz

压缩比


gzip -c file1 file2> foo.gz

如果您想重新压缩串联文件以获得更好的压缩效果,请执行以下操作:


gzip -cd old.gz | gzip> new.gz

如果压缩文件由多个成员组成,则由--list选项报告的未压缩大小和CRC仅适用于最后一个成员。 如果您需要所有成员的未压缩大小,则可以使用:


gzip -cd file.gz | wc -c

如果您希望创建一个具有多个成员的归档文件,以便以后可以独立提取成员,请使用tar或zip等归档文件。 GNU tar支持-z选项来透明地调用gzip。 gzip被设计为对tar的补充,而不是作为替代品。

也可以看看

压缩 (1)

gzip文件格式在P.Deutsch,GZIP文件格式规范版本4.3, ftp://isp.isi.edu/in-notes/rfc1952.txt,Internet RFC 1952(1996年5月)中指定。 压缩缩减格式在P.Deutsch,DEFLATE Compressed Data Format Specification version 1.3, ,Internet RFC 1951(1996年5月)中指定。

重要提示:使用man命令( %man )查看特定计算机上的命令使用方式。