在Linux系統中,我們通常使用的文件壓縮命令有:bunzip2 , bzip2 , cpio , gunzip , gzip ,split(切割文件) , zgrep(在壓縮文件中尋找匹配的正則表達式), zip ,unzip, tar ,rar。
最後四個是我比較常用的,今天的筆記就寫這四個的好了。
1、tar:
tar命令:tar [選項...] [FILE]...
輸入“tar -?”獲取相關幫助信息,tar的幫助文檔給出示例如下:
示例
tar -cf archive.tar foo bar # 從文件 foo 和 bar 創建歸檔文件archive.tar。
tar -tvf archive.tar # 詳細列舉歸檔文件 archive.tar中的所有文件。
tar -xf archive.tar # 展開歸檔文件 archive.tar中的所有文件。
如果是要壓縮文件夾的話,輸入:
tar -cvf dirArchive.tar /dirName
同樣的,要將歸檔文件解壓到特定文件夾的話,則是:
tar -xvf dirArchive.tar /dirName
下面復習一下。我們先人為做個文件夾出來,裡面放置若干文件夾和文件:
我們首先創建一個tar文件,先壓縮一個文件夾(testdir):
tar -cf testdir.tar testdir
然後列出該壓縮包裡的結構:
接著我們向這個壓縮包追加文件:
當然了,上述單步操作沒必要做了,壓縮包裡面已經有這個文件。
然後再看看這個壓縮包裡的結構:
如果使用示例中的-v選項,則會將壓縮包裡的文件屬性全部列出。包括權限,創建人,字節大小,修改時間和文件名:
從tar壓縮文件中解壓並顯示文件列表:
一般來說比較常用到的選項有主操作選項:
另外再練習一下其他的一些用法:
1、當壓縮testdir目錄的時候,需要將文件夾根路徑內的test文件排除:
2、只壓縮比指定時間更新的文件:
3、壓縮所有文件名前綴為“te”的文件或文件夾(或者壓縮後綴為“st”的文件):
最後補充一下常用的選項:
-p, --preserve-permissions, --same-permissions
保留解壓文件權限信息(默認只為超級用戶服務)
--preserve 與 -p 和 -s 一樣
--same-owner 嘗試解壓時保持所有者關系一致(超級用戶默認此項)
-r, --append 追加文件至歸檔結尾
-u, --update 僅追加比歸檔中副本更新的文件
-k, --keep-old-files 解壓時不要替換存在的文件
--keep-newer-files
不要替換比歸檔中副本更新的已存在的文件
--no-overwrite-dir 保留已存在目錄的元數據
--overwrite 解壓時重寫存在的文件
--overwrite-dir
解壓時重寫已存在目錄的元數據(默認)
--recursive-unlink 解壓目錄之前先清除目錄層次
--remove-files 在添加文件至歸檔後刪除它們
-N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE 只保存比 DATE-OR-FILE 更新的文件
2、rar:
rar
Linux系統的默認軟件包裡是不包含rar壓縮工具的,所以我們先安裝rar:
sudo apt-get install rar
使用舉例,比如說現在我們要進行文件壓縮:
在完成壓縮之後,我們可以通過命令l獲取壓縮文件內具體的結構信息:
甚至可以通過命令p將壓縮文件內的所有信息輸出到控制台:
比如說以追加性的方式更新壓縮文件可選用-ad:
或者說想把某個文件排除在外可以選用開關-x(注意,要排除的串要緊跟在x後面,不用加任何符號),比如我們這裡想要將文件夾根路徑下凡是“te”開頭的文件都排除:
還有加密,用開關-p,同樣的,密碼緊隨p後面即可:
如果相對文件進行解壓或者直接打開文件,就會要求你輸入密碼:
除此之外,還有一些常用的選項有:
ag[format] Generate archive name using the current date
cl Convert names to lower case
cu Convert names to upper case
df Delete files after archiving
ed Do not add empty directories
dw Wipe files after archiving
其他的命令和開關可參照幫助手冊。
3、zip , unzip:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
zip和unzip的使用方法是比較簡單的,甚至連幫助文檔都寫得很簡單,所以也就沒什麼筆記好寫的了,直接看幫助文檔即可。
linux zip 命令詳解
功能說明:壓縮文件。
語 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目錄>][-ll][-n <字尾字符串>][-t <日期時間>][-<壓縮效率>][壓縮文件][文件...][-i <范本樣式>][-x <范本樣式>]
補充說明:zip是個使用廣泛的壓縮程序,文件經它壓縮後會另外產生具有".zip"擴展名的壓縮文件。
參 數:
-A 調整可執行的自動解壓縮文件。
-b<工作目錄> 指定暫時存放文件的目錄。
-c 替每個被壓縮的文件加上注釋。
-d 從壓縮文件內刪除指定的文件。
-D 壓縮文件內不建立目錄名稱。
-f 此參數的效果和指定"-u"參數類似,但不僅更新既有文件,如果某些文件原本不存在於壓縮文件內,使用本參數會一並將其加入壓縮文件中。
-F 嘗試修復已損壞的壓縮文件。
-g 將文件壓縮後附加在既有的壓縮文件之後,而非另行建立新的壓縮文件。
-h 在線幫助。
-i<范本樣式> 只壓縮符合條件的文件。
-j 只保存文件名稱及其內容,而不存放任何目錄名稱。
-J 刪除壓縮文件前面不必要的數據。
-k 使用MS-DOS兼容格式的文件名稱。
-l 壓縮文件時,把LF字符置換成LF+CR字符。
-ll 壓縮文件時,把LF+CR字符置換成LF字符。
-L 顯示版權信息。
-m 將文件壓縮並加入壓縮文件後,刪除原始文件,即把文件移到壓縮文件中。
-n<字尾字符串> 不壓縮具有特定字尾字符串的文件。
-o 以壓縮文件內擁有最新更改時間的文件為准,將壓縮文件的更改時間設成和該文件相同。
-q 不顯示指令執行過程。
-r 遞歸處理,將指定目錄下的所有文件和子目錄一並處理。
-S 包含系統和隱藏文件。
-t<日期時間> 把壓縮文件的日期設成指定的日期。
-T 檢查備份文件內的每個文件是否正確無誤。
-u 更換較新的文件到壓縮文件內。
-v 顯示指令執行過程或顯示版本信息。
-V 保存VMS操作系統的文件屬性。
-w 在文件名稱裡假如版本編號,本參數僅在VMS操作系統下有效。
-x<范本樣式> 壓縮時排除符合條件的文件。
-X 不保存額外的文件屬性。
-y 直接保存符號連接,而非該連接所指向的文件,本參數僅在UNIX之類的系統下有效。
-z 替壓縮文件加上注釋。
-$ 保存第一個被壓縮文件所在磁盤的卷冊名稱。
-<壓縮效率> 壓縮效率是一個介於1-9的數值。
linux unzip 命令詳解
功能說明:解壓縮zip文件
語 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密碼>][.zip文件][文件][-d <目錄>][-x <文件>] 或 unzip [-Z]
補充說明:unzip為.zip壓縮文件的解壓縮程序。
參 數:
-c 將解壓縮的結果顯示到屏幕上,並對字符做適當的轉換。
-f 更新現有的文件。
-l 顯示壓縮文件內所包含的文件。
-p 與-c參數類似,會將解壓縮的結果顯示到屏幕上,但不會執行任何的轉換。
-t 檢查壓縮文件是否正確。
-u 與-f參數類似,但是除了更新現有的文件外,也會將壓縮文件中的其他文件解壓縮到目錄中。
-v 執行是時顯示詳細的信息。
-z 僅顯示壓縮文件的備注文字。
-a 對文本文件進行必要的字符轉換。
-b 不要對文本文件進行字符轉換。
-C 壓縮文件中的文件名稱區分大小寫。
-j 不處理壓縮文件中原有的目錄路徑。
-L 將壓縮文件中的全部文件名改為小寫。
-M 將輸出結果送到more程序處理。
-n 解壓縮時不要覆蓋原有的文件。
-o 不必先詢問用戶,unzip執行後覆蓋原有文件。
-P<密碼> 使用zip的密碼選項。
-q 執行時不顯示任何信息。
-s 將文件名中的空白字符轉換為底線字符。
-V 保留VMS的文件版本信息。
-X 解壓縮時同時回存文件原來的UID/GID。
[.zip文件] 指定.zip壓縮文件。
[文件] 指定要處理.zip壓縮文件中的哪些文件。
-d<目錄> 指定文件解壓縮後所要存儲的目錄。
-x<文件> 指定不要處理.zip壓縮文件中的哪些文件。
-Z unzip -Z等於執行zipinfo指令
范例:
zip命令可以用來將文件壓縮成為常用的zip格式。unzip命令則用來解壓縮zip文件。
1. 我想把一個文件abc.txt和一個目錄dir1壓縮成為yasuo.zip:
# zip -r yasuo.zip abc.txt dir1
2.我下載了一個yasuo.zip文件,想解壓縮:
# unzip yasuo.zip
3.我當前目錄下有abc1.zip,abc2.zip和abc3.zip,我想一起解壓縮它們:
# unzip abc\?.zip
注釋:?表示一個字符,如果用*表示任意多個字符。
4.我有一個很大的壓縮文件large.zip,我不想解壓縮,只想看看它裡面有什麼:
# unzip -v large.zip
5.我下載了一個壓縮文件large.zip,想驗證一下這個壓縮文件是否下載完全了
# unzip -t large.zip
6.我用-v選項發現music.zip壓縮文件裡面有很多目錄和子目錄,並且子目錄中其實都是歌曲mp3文件,我想把這些文件都下載到第一級目錄,而不是一層一層建目錄:
# unzip -j music.zip