Linux基礎命令---zip

一生有你llx發表於2018-12-18

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 、退出碼

,正常,沒有錯誤。

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 。可以使用 -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%)

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29270124/viewspace-2283342/,如需轉載,請註明出處,否則將追究法律責任。