Linux基础命令---zip
zip
zip是一種最通用的文件壓縮方式,使用于unix、msdos、windows、OS等系統(tǒng)。如果在編譯zip時(shí)包含bzip 2庫(kù),zip現(xiàn)在也支持bzip 2壓縮。當(dāng)將大于4GB的文件添加到存檔中時(shí),zip會(huì)自動(dòng)使用Zip 64擴(kuò)展名,包含Zip 64條目的歸檔將被更新(如果結(jié)果的歸檔仍然需要Zip 64),歸檔的大小將超過(guò)4GB,或者當(dāng)歸檔中的條目數(shù)超過(guò)64K時(shí)。Zip 64也用于從標(biāo)準(zhǔn)輸入中傳輸?shù)臋n案,因?yàn)槭孪炔恢肋@些檔案的大小,但是選項(xiàng)fz可以用來(lái)強(qiáng)制zip創(chuàng)建與PKZIP 2兼容的檔案(只要不需要Zip 64擴(kuò)展)。必須使用PKZIP4.5兼容解壓縮,例如解壓縮6.0或更高版本,才能使用Zip 64擴(kuò)展名提取文件。
zip程序?qū)⒁粋€(gè)或多個(gè)壓縮文件與有關(guān)文件的信息(名稱、路徑、日期、上次修改的時(shí)間、保護(hù)和檢查信息以驗(yàn)證文件完整性)一起放入一個(gè)壓縮存檔中。可以使用一個(gè)命令將整個(gè)目錄結(jié)構(gòu)打包到zip存檔中。對(duì)于文本文件來(lái)說(shuō),壓縮比為2:1和3:1是常見的。zip只有一種壓縮方法(通縮),并且可以在不壓縮的情況下存儲(chǔ)文件。(如果添加了bzip 2支持,zip也可以使用bzip 2壓縮,但這些條目需要一個(gè)合理的現(xiàn)代解壓縮來(lái)解壓縮。當(dāng)選擇bzip 2壓縮時(shí),它將通貨緊縮替換為默認(rèn)方法。)zip會(huì)自動(dòng)為每個(gè)要壓縮的文件選擇更好的兩個(gè)文件(通縮或存儲(chǔ),如果選擇bzip2,則選擇bzip2或Store)。
此命令的適用范圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、語(yǔ)法
zip?[選項(xiàng)]??zipfile?list?
?
2、選項(xiàng)列表
選項(xiàng) | 說(shuō)明 |
-??| -h | --help | 幫助信息 |
-h2 | --more-help | 顯示擴(kuò)展幫助,包括更多關(guān)于命令行格式、模式匹配和更模糊的選項(xiàng)。 |
-V | --version | 顯示命令版本信息 |
-a | --ascii | 將系統(tǒng)使用的EBCDIC文件轉(zhuǎn)換為ascii |
-A | --adjust-sfx | 調(diào)整自解壓可執(zhí)行檔案。自解壓縮的可執(zhí)行存檔是通過(guò)將SFX存根放在現(xiàn)有存檔的前面創(chuàng)建的。-A選項(xiàng)告訴zip調(diào)整存儲(chǔ)在歸檔中的條目偏移量,以考慮到這些“序言”數(shù)據(jù)。 |
-b path??|??--temp-path path | 為臨時(shí)zip歸檔使用指定的路徑 |
-B | --binary | 使用二進(jìn)制格式,默認(rèn)是文本格式 |
-c | --entry-comments | 給被壓縮的文件加上注釋信息 |
-d | --delete | 將指定的文件從壓縮文件中刪除 |
-db | --display-bytes | 顯示正在運(yùn)行的字節(jié)計(jì)數(shù),顯示壓縮的字節(jié)和要運(yùn)行的字節(jié)。 |
-dc | --display-counts | 顯示已壓縮的條目的運(yùn)行計(jì)數(shù)和要運(yùn)行的條目 |
-dd | --display-dots | 在每個(gè)條目被拉鏈時(shí)顯示點(diǎn)(除了在具有自己的進(jìn)度指示器的端口上)。見下面的設(shè)置點(diǎn)大小-DS。默認(rèn)情況下,每處理10 MB的輸入文件就有一個(gè)點(diǎn)。-v選項(xiàng)還顯示點(diǎn)(以前的速率比這個(gè)高得多,但現(xiàn)在-v也默認(rèn)為10 MB),這個(gè)速率也是由-ds控制的。 |
-dg | --display-globaldots | 顯示存檔的進(jìn)度點(diǎn),而不是為每個(gè)文件顯示進(jìn)度點(diǎn)。 |
-ds size | --dot-size size | 設(shè)置為顯示的每個(gè)點(diǎn)處理的輸入文件的數(shù)量。尺寸為nm格式,其中n是一個(gè)數(shù)字,m是一個(gè)乘數(shù)。目前m可以是k(KB),m(MB),g(GB),或者t(TB),所以如果n是100,m是k,那么大小將是100 k,即100 KB。默認(rèn)值為10 MB。 |
-du | --display-usize | 顯示每個(gè)條目的未壓縮大小。 |
-dv | --display-volume | 顯示正在讀取的每個(gè)條目的卷(磁盤)號(hào),如果讀取現(xiàn)有存檔,并將其寫入 |
-D | --no-dir-entries | 不要在zip存檔中為目錄創(chuàng)建條目。 |
-DF | --difference-archive | 創(chuàng)建一個(gè)包含自原始存檔創(chuàng)建以來(lái)所有新的和已更改的文件的歸檔文件。 |
-e | --encrypt | 壓縮文件加密 |
-f | --freshen | 替代壓縮文件中的舊文件,如果文件不存在,那么不會(huì)追加文件 |
-F | --fix | -FF | --fixfix | 嘗試修復(fù)已經(jīng)損壞的壓縮文件 |
-FI | --fifo | 通常zip會(huì)跳過(guò)讀取遇到的任何FIFO(命名管道),因?yàn)槿绻鸉IFO沒有被喂入,zip就會(huì)掛起。 |
-FS | --filesync | 將存檔的內(nèi)容與操作系統(tǒng)上的文件同步 |
-g | --grow | 將文件追加到已經(jīng)存在的壓縮文件結(jié)尾 |
-i | --include | 僅包含指定的文件 |
-j | --junk-paths | 壓縮的時(shí)候,忽略文件名中的路徑,只保存文件名和內(nèi)容 |
-J | --junk-sfx | 從存檔中刪除任何預(yù)置的數(shù)據(jù) |
-i | --include | 只包含指定的文件 |
-la | --log-append | 附加到現(xiàn)有日志文件。默認(rèn)值是覆蓋 |
-lf | --logfile-path | 在給定路徑上打開日志文件。默認(rèn)情況下,該位置的任何現(xiàn)有文件都會(huì)被覆蓋 |
-li | --log-info | 在日志中包含信息消息,例如正在壓縮的文件名。默認(rèn)情況下,只包含命令行、任何警告和錯(cuò)誤以及最終狀態(tài)。 |
-L | --license | 顯示zip的許可證 |
-m | --move | 將指定的文件移動(dòng)到壓縮文件 |
-MM | --must-match | 所有輸入模式必須至少匹配一個(gè)文件,所有找到的輸入文件必須是可讀的。 |
-n | --suffixes | 不要嘗試壓縮以給定后綴命名的文件。 |
-nw | --no-wild | 不要執(zhí)行內(nèi)部通配符處理。 |
-o | --latest-time | 將zip歸檔的“最后修改”時(shí)間設(shè)置為在zip歸檔中的條目中找到的最新(最老的)“最后修改”時(shí)間。 |
-O | --output-file | 像往常一樣處理歸檔更改,但不是更新現(xiàn)有存檔,而是將新存檔輸出到輸出文件。 |
-p | --path | 將相對(duì)文件路徑作為存儲(chǔ)在存檔中的文件名稱的一部分 |
-P | --password | 加密 |
-q | --quite | 靜默模式,不顯示執(zhí)行過(guò)程 |
-r | --recurse-paths | 壓縮的時(shí)候,遞歸處理目錄 |
-R | --recurse-patterns | 遞歸遍歷目錄結(jié)構(gòu),從當(dāng)前目錄開始。 |
-s | --split-size | 啟用創(chuàng)建拆分存檔并設(shè)置拆分大小 |
-sb | --split-bell | 如果拆分并使用拆分暫停模式,則在zip對(duì)每個(gè)拆分目標(biāo)暫停時(shí)按下鈴聲。 |
-sc | --show-command | 顯示已處理并退出的啟動(dòng)zip的命令行 |
-sf | --show-files | 顯示要操作的文件,然后退出。 |
-so | --show-options | 顯示在當(dāng)前系統(tǒng)上編譯的zip支持的所有可用選項(xiàng) |
-sp | --split-pause | 如果使用-s啟用拆分,則啟用拆分暫停模式 |
-su | --show-unicode | 和-sf一樣,如果存在,還會(huì)顯示路徑的unicode版本 |
-sU | --show-just-unicode | 和-sf一樣,僅顯示路徑的Unicode版本(如果存在),否則顯示路徑的標(biāo)準(zhǔn)版本。 |
-sv | --split-verbose | 在拆分時(shí)啟用各種詳細(xì)的消息,顯示拆分是如何進(jìn)行的。 |
-t mmddyyyy | --from-date mmddyyyy | 不要對(duì)在指定日期之前修改的文件進(jìn)行操作,其中mm是月份(00-12),dd是月份的日期(01-31),yyyy是年。 |
-T | --test | 測(cè)試新zip文件的完整性。如果檢查失敗,舊的zip文件將保持不變,并且(使用-m選項(xiàng))不會(huì)刪除輸入文件。 |
-TT | --unzip-command | 當(dāng)使用-T選項(xiàng)時(shí),使用命令cmd而不是“unzip-tqq”來(lái)測(cè)試存檔。 |
-U | --copy-entries | 將條目從一個(gè)存檔復(fù)制到另一個(gè)存檔。 |
-u | --update | 更新文件,不存在的時(shí)候,直接追加。僅當(dāng)zip存檔中的現(xiàn)有條目比zip存檔中的版本修改得更近時(shí),才替換(更新)它。 |
-UN | --unicode | 確定zip應(yīng)該如何處理unicode文件名 |
-x | --exclude | 壓縮時(shí)不包含指定的文件 |
-y | 壓縮時(shí)直接保存符號(hào)鏈接 |
-v | --verbose | 顯示執(zhí)行過(guò)程 |
-ws | --wild-stop-dirs | 通配符僅在目錄級(jí)別匹配。 |
-# | 使用指定的數(shù)字#調(diào)整壓縮速度,其中-0表示沒有壓縮(存儲(chǔ)所有文件),-1表示最快的壓縮速度(壓縮較少),-9表示最慢的壓縮速度(最佳壓縮,忽略后綴列表)。默認(rèn)的壓縮級(jí)別是-6 |
-@ | --names-stdin | 從標(biāo)準(zhǔn)輸入中獲取輸入文件列表。每行只有一個(gè)文件名。 |
?
4、模式匹配
?,匹配任意單個(gè)字符
*,匹配任意多個(gè)字符
[]匹配括號(hào)內(nèi)所示范圍內(nèi)的任何字符(例如:[a-f],[0-9])。
?
5、退出碼
0,正常,沒有錯(cuò)誤。
2,壓縮文件的意外結(jié)束。
3,檢測(cè)到zip文件格式中的通用錯(cuò)誤。
4,在程序初始化期間,zip無(wú)法為一個(gè)或多個(gè)緩沖區(qū)分配內(nèi)存。
5,檢測(cè)到zip文件格式出現(xiàn)嚴(yán)重錯(cuò)誤。
6,條目太大,無(wú)法處理(例如,不使用Zip 64或試圖讀取現(xiàn)有存檔太大時(shí),輸入文件大于2GB)或條目太大,不能用zip拆分。
7,無(wú)效注釋格式。
8,zip-T失敗或內(nèi)存不足。
9,用戶使用Control-C(或類似的)過(guò)早中止zip。
10,使用臨時(shí)文件時(shí),zip遇到了一個(gè)錯(cuò)誤。
11,讀取或查找錯(cuò)誤。
12,zip無(wú)事可做。
13,丟失或空壓縮文件。
14,寫入文件時(shí)出錯(cuò)。
15,zip無(wú)法創(chuàng)建要寫入的文件。
16,壞命令行參數(shù)。
18,zip無(wú)法打開要讀取的指定文件。
19,在此系統(tǒng)中不支持的選項(xiàng)編譯了zip。
?
6、例子代碼
創(chuàng)建存檔stuff.zip(假設(shè)它不存在),并以壓縮形式將所有文件放在當(dāng)前目錄中(.zip后綴自動(dòng)添加,除非存檔名稱已經(jīng)包含一個(gè)點(diǎn);這允許明確說(shuō)明其他后綴)。 zip??stuff??* zip??stuff??.* * 壓縮整個(gè)目錄。創(chuàng)建存檔foo.zip,其中包含當(dāng)前目錄中包含的目錄foo中的所有文件和目錄。 zip??-r??foo??foo 您可能希望創(chuàng)建一個(gè)包含foo中文件的zip存檔,而不記錄目錄名foo。可以使用-j選項(xiàng)關(guān)閉路徑,如 zip??-j??foo??foo/* 如果您缺少磁盤空間,您可能沒有足夠的空間來(lái)保存原始目錄和相應(yīng)的壓縮歸檔文件。在這種情況下,您可以使用-m選項(xiàng)分步驟創(chuàng)建歸檔文件。如果foo包含子目錄Tom、Dick和Harry。其中,第一個(gè)命令創(chuàng)建foo.zip,下兩個(gè)命令添加到其中。在完成每個(gè)zip命令后,最后創(chuàng)建的歸檔文件將被刪除,為下一個(gè)zip命令提供工作空間。 zip??-rm??foo??foo/tom zip??-rm??foo??foo/dick zip??-rm??foo??foo/harry 使用-s設(shè)置拆分大小并創(chuàng)建拆分存檔。大小可選地被k(KB)、m(MB)、g(Gb)或t(Tb)之一跟隨。創(chuàng)建目錄foo的拆分存檔,每個(gè)分區(qū)不大于2GB。如果foo包含5 GB的內(nèi)容,并且內(nèi)容未經(jīng)壓縮就存儲(chǔ)在拆分存檔中(為了使這個(gè)示例變得簡(jiǎn)單),這將創(chuàng)建三個(gè)分塊,分別是2GB的split.z01、2GB的split.z02和略高于1GB的split.zip。 zip??-s??2g??-r??split.zip??foo 雖然zip不更新拆分檔案,但zip提供了新的選項(xiàng)-O(-Output-file),允許更新拆分檔案并將其保存在新的存檔中。讀取歸檔文件,即使拆分,也會(huì)添加foo.c和bar.c文件,并將結(jié)果存檔寫入outArchive.zip。如果inArchive.zip是拆分的,那么outArchive.zip默認(rèn)為相同的拆分大小。請(qǐng)注意,outArchive.zip和使用它創(chuàng)建的任何拆分文件都會(huì)在沒有警告的情況下被覆蓋。這種情況將來(lái)可能會(huì)改變。 zip??inarchive.zip??foo.c??bar.c??--out??outarchive.zip |
?
7、實(shí)例
1)壓縮文件
[root@localhost weijie]#?zip -r res . -i *.c?????????????//壓縮當(dāng)前目錄下的所有.c文件 ??adding: 11.c (stored 0%) ??adding: 4.c (stored 0%) ??adding: 2.c (deflated 9%) ??adding: 3.c (stored 0%) ??adding: 5.c (deflated 13%) [root@localhost weijie]#?ls 11.c??1.c.gz?2.c??3.c??4.c?5.c??6.c~??res.zip |
2)給壓縮文件添加、刪除內(nèi)容
[root@localhost weijie]#?zip res.zip -g 6.c~??????????//追加6.c~ ??adding: 6.c~ (stored 0%) [root@localhost weijie]#?zip res.zip -d 2.c???????????//刪除2.c deleting: 2.c |
3)壓縮時(shí)設(shè)置密碼
[root@localhost weijie]#?zip -er res . -i *.c????????//設(shè)置密碼,需要輸入兩次密碼 Enter password:? Verify password:? ??adding: 11.c (stored 0%) ??adding: 4.c (stored 0%) ??adding: 2.c (deflated 9%) ??adding: 3.c (stored 0%) ??adding: 5.c (deflated 13%) |
?
轉(zhuǎn)載于:https://blog.51cto.com/9888479/2331827
總結(jié)
以上是生活随笔為你收集整理的Linux基础命令---zip的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 阿里研发支出连续三年登顶; 《MIT科技
- 下一篇: Python导出Excel图表