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