每天一個 Linux 命令:gzip 命令

減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。gzip 是在 Linux 系統中經常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。gzip 不僅可以用來壓縮大的、較少使用的文件以節省磁盤空間,還可以和 tar 命令一起構成 Linux 操作系統中比較流行的壓縮文件格式。據統計,gzip 命令對文本文件有 60%~70% 的壓縮率。

1.命令格式:

gzip[參數][文件或者目錄]

2.命令功能:

gzip 是個使用廣泛的壓縮程序,文件經它壓縮過後,其名稱後面會多出 .gz 的擴展名。

3.命令參數:

-a 或 --ascii  使用 ASCII 文字模式。

-c 或 --stdout 或 --to-stdout  把壓縮後的文件輸出到標準輸出設備,不去更動原始文件。

-d 或 --decompress 或 ----uncompress  解開壓縮文件。

-f 或 --force  強行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否爲符號連接。

-h 或 --help  在線幫助。

-l 或 --list  列出壓縮文件的相關信息。

-L 或 --license  顯示版本與版權信息。

-n 或 --no-name  壓縮文件時,不保存原來的文件名稱及時間戳記。

-N 或 --name  壓縮文件時,保存原來的文件名稱及時間戳記。

-q 或 --quiet  不顯示警告信息。

-r 或 --recursive  遞歸處理,將指定目錄下的所有文件及子目錄一併處理。

-S <壓縮字尾字符串> 或 ----suffix < 壓縮字尾字符串 >  更改壓縮字尾字符串。

-t 或 --test  測試壓縮文件是否正確無誤。

-v 或 --verbose  顯示指令執行過程。

-V 或 --version  顯示版本信息。

-num 用指定的數字 num 調整壓縮的速度,-1 或 --fast 表示最快壓縮方法(低壓縮比),-9 或 --best 表示最慢壓縮方法(高壓縮比)。系統缺省值爲 6。

4.使用實例:

實例 1:把 test6 目錄下的每個文件壓縮成。gz 文件

命令:

gzip *

輸出:

[root@localhost test6]# 11

總計 604

---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log

[root@localhost test6]# gzip *

[root@localhost test6]# 11

總計 28

---xr--r-- 1 root mail  1341 11-30 08:39 linklog.log.gz
---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
-rw-r--r-- 1 mail users   70 11-30 08:39 log2013.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2014.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2015.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2016.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2017.log.gz

[root@localhost test6]#

實例 2:把例 1 中每個壓縮的文件解壓,並列出詳細的信息

命令:

gzip -dv *

輸出:

[root@localhost test6]# 11

總計 28

---xr--r-- 1 root mail  1341 11-30 08:39 linklog.log.gz
---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
-rw-r--r-- 1 mail users   70 11-30 08:39 log2013.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2014.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2015.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2016.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2017.log.gz

[root@localhost test6]# gzip -dv *

linklog.log.gz:  99.6% -- replaced with linklog.log
log2012.log.gz:  99.6% -- replaced with log2012.log
log2013.log.gz:  47.5% -- replaced with log2013.log
log2014.log.gz:   0.0% -- replaced with log2014.log
log2015.log.gz:   0.0% -- replaced with log2015.log
log2016.log.gz:   0.0% -- replaced with log2016.log
log2017.log.gz:   0.0% -- replaced with log2017.log

[root@localhost test6]# 11

總計 604

---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log

[root@localhost test6]#

實例 3:詳細顯示例 1 中每個壓縮的文件的信息,並不解壓

命令:

gzip -l *

輸出:

[root@localhost test6]# gzip -l *

         compressed        uncompressed  ratio uncompressed_name

               1341              302108  99.6% linklog.log

               1341              302108  99.6% log2012.log

                 70                  61  47.5% log2013.log

                 32                   0   0.0% log2014.log

                 32                   0   0.0% log2015.log

                 32                   0   0.0% log2016.log

                 32                   0   0.0% log2017.log

               2880              604277  99.5% (totals)

實例 4:壓縮一個 tar 備份文件,此時壓縮文件的擴展名爲。tar.gz

命令:

gzip -r log.tar

輸出:

[root@localhost test]# ls -al log.tar

-rw-r--r-- 1 root root 307200 11-29 17:54 log.tar

[root@localhost test]# gzip -r log.tar

[root@localhost test]# ls -al log.tar.gz 

-rw-r--r-- 1 root root 1421 11-29 17:54 log.tar.gz

實例 5:遞歸的壓縮目錄

命令:

gzip -rv test6

輸出:

[root@localhost test6]# 11

總計 604

---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log

[root@localhost test6]# cd ..

[root@localhost test]# gzip -rv test6

test6/log2014.log:        0.0% -- replaced with test6/log2014.log.gz
test6/linklog.log:       99.6% -- replaced with test6/linklog.log.gz
test6/log2015.log:        0.0% -- replaced with test6/log2015.log.gz
test6/log2013.log:       47.5% -- replaced with test6/log2013.log.gz
test6/log2012.log:       99.6% -- replaced with test6/log2012.log.gz
test6/log2017.log:        0.0% -- replaced with test6/log2017.log.gz
test6/log2016.log:        0.0% -- replaced with test6/log2016.log.gz

[root@localhost test]# cd test6

[root@localhost test6]# 11

總計 28

---xr--r-- 1 root mail  1341 11-30 08:39 linklog.log.gz
---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
-rw-r--r-- 1 mail users   70 11-30 08:39 log2013.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2014.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2015.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2016.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2017.log.gz

說明:

這樣,所有 test 下面的文件都變成了 *.gz,目錄依然存在只是目錄裏面的文件相應變成了 *.gz. 這就是壓縮,和打包不同。因爲是對目錄操作,所以需要加上 - r 選項,這樣也可以對子目錄進行遞歸了。

實例 6:遞歸地解壓目錄

命令:

gzip -dr test6

輸出:

[root@localhost test6]# 11

總計 28

---xr--r-- 1 root mail  1341 11-30 08:39 linklog.log.gz
---xr--r-- 1 mail users 1341 11-30 08:39 log2012.log.gz
-rw-r--r-- 1 mail users   70 11-30 08:39 log2013.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2014.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2015.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2016.log.gz
-rw-r--r-- 1 root mail    32 11-30 08:39 log2017.log.gz

[root@localhost test6]# cd ..

[root@localhost test]# gzip -dr test6

[root@localhost test]# cd test6

[root@localhost test6]# 11

總計 604

---xr--r-- 1 root mail  302108 11-30 08:39 linklog.log
---xr--r-- 1 mail users 302108 11-30 08:39 log2012.log
-rw-r--r-- 1 mail users     61 11-30 08:39 log2013.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2014.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2015.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2016.log
-rw-r--r-- 1 root mail       0 11-30 08:39 log2017.log

[root@localhost test6]#

轉自:www.cnblogs.com/peida/archive/2012/10/26/2740521.html

****推薦關注「算法愛好者」,修煉編程內功

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Xpri3uDbDp4HZo6DJ1-7Ng