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 )查看特定計算機上的命令使用方式。