Linux gzip命令壓縮文件實(shí)現(xiàn)原理及代碼實(shí)例
gzip 是 Linux 系統(tǒng)中經(jīng)常用來(lái)對(duì)文件進(jìn)行壓縮和解壓縮的命令,通過(guò)此命令壓縮得到的新文件,其擴(kuò)展名通常標(biāo)記為“.gz”。
再?gòu)?qiáng)調(diào)一下,gzip 命令只能用來(lái)壓縮文件,不能壓縮目錄,即便指定了目錄,也只能壓縮目錄內(nèi)的所有文件。
gzip 命令的基本格式如下:
[root@localhost ~]# gzip [選項(xiàng)] 源文件
命令中的源文件,當(dāng)進(jìn)行壓縮操作時(shí),指的是普通文件;當(dāng)進(jìn)行解壓縮操作時(shí),指的是壓縮文件。該命令常用的選項(xiàng)及含義如表 1 所示。
表 1 gzip 命令常用選項(xiàng)及含義
選項(xiàng) | 含義 |
---|---|
-c | 將壓縮數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出中,并保留源文件。 |
-d | 對(duì)壓縮文件進(jìn)行解壓縮。 |
-r | 遞歸壓縮指定目錄下以及子目錄下的所有文件。 |
-v | 對(duì)于每個(gè)壓縮和解壓縮的文件,顯示相應(yīng)的文件名和壓縮比。 |
-l | 對(duì)每一個(gè)壓縮文件,顯示以下字段:
|
-數(shù)字 | 用于指定壓縮等級(jí),-1 壓縮等級(jí)最低,壓縮比最差;-9 壓縮比最高。默認(rèn)壓縮比是 -6。 |
【例 1】基本壓縮
gzip 壓縮命令非常簡(jiǎn)單,甚至不需要指定壓縮之后的壓縮包名,只需指定源文件名即可。我們來(lái)試試:
[root@localhost ~]# gzip install.log
#壓縮instal.log 文件
[root@localhost ~]# ls
anaconda-ks.cfg install.log.gz install.log.syslog
#壓縮文件生成,但是源文件也消失了
【例 2】保留源文件壓縮
在使用 gzip 命令壓縮文件時(shí),源文件會(huì)消失,從而生成壓縮文件。這時(shí)有些人會(huì)有強(qiáng)迫癥,就逼問(wèn)筆者:能不能在壓縮文件的時(shí)候,不讓源文件消失?好吧,也是可以的,不過(guò)很別扭。
[root@localhost ~]# gzip -c anaconda-ks.cfg >anaconda-ks.cfg.gz
#使用-c選項(xiàng),但是不讓壓縮數(shù)據(jù)輸出到屏幕上,而是重定向到壓縮文件中,這樣可以縮文件的同時(shí)不刪除源文件
[root@localhost ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog
#可以看到壓縮文件和源文件都存在
【例 3】 壓縮目錄
我們可能會(huì)想當(dāng)然地認(rèn)為 gzip 命令可以壓縮目錄。 我們來(lái)試試:
[root@localhost ~]# mkdir test
[root@localhost ~]# touch test/test1
[root@localhost ~]# touch test/test2
[root@localhost ~]# touch test/test3 #建立測(cè)試目錄,并在里面建立幾個(gè)測(cè)試文件
[root@localhost ~]# gzip -r test/
#壓縮目錄,并沒(méi)有報(bào)錯(cuò)
[root@localhost ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog test
#但是查看發(fā)現(xiàn)test目錄依然存在,并沒(méi)有變?yōu)閴嚎s文件
[root@localhost ~]# ls test/
testl .gz test2.gz test3.gz
#原來(lái)gzip命令不會(huì)打包目錄,而是把目錄下所有的子文件分別壓縮
在 Linux 中,打包和壓縮是分開(kāi)處理的。而 gzip 命令只會(huì)壓縮,不能打包,所以才會(huì)出現(xiàn)沒(méi)有打包目錄,而只把目錄下的文件進(jìn)行壓縮的情況。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ssh遠(yuǎn)程登陸沒(méi)有用戶(hù)名和主機(jī)名的解決方法
這篇文章主要給大家分享了ssh遠(yuǎn)程登陸沒(méi)有用戶(hù)名和主機(jī)名的解決方法,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03在Windows的Apache服務(wù)器上配置對(duì)PHP和CGI的支持
這篇文章主要介紹了在Windows的Apache服務(wù)器上配置對(duì)PHP和CGI的支持,其中CGI腳本文中演示的為Perl示例,需要的朋友可以參考下2015-07-07Linux多路轉(zhuǎn)接之select函數(shù)使用方式
這篇文章主要介紹了Linux多路轉(zhuǎn)接之select函數(shù)使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08ubuntu18.04 安裝qt5.12.8及環(huán)境配置的詳細(xì)教程
這篇文章主要介紹了ubuntu18.04 安裝qt5.12.8及環(huán)境配置的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05linux下使用 du查看某個(gè)文件或目錄占用磁盤(pán)空間的大小方法
下面小編就為大家?guī)?lái)一篇linux下使用 du查看某個(gè)文件或目錄占用磁盤(pán)空間的大小方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11