Linux 解壓指令

MElephant發表於2024-03-17

zip / unzip

常見格式

  • -d dir:指定解壓縮後的目標目錄
  • -l:列出 zip 檔案中的內容,但不解壓縮(List)
  • -q:安靜模式,不顯示解壓縮過程(Quiet)
  • -o:覆蓋已存在的檔案而不詢問(Overwrite)
  • -n:不覆蓋已存在的檔案(Never overwrite)
  • -x:排除某一檔案(eXclude)

檢視內容

unzip -l root.zip				# 列出壓縮包中的檔案

解壓

unzip root.zip					# 解壓到當前目錄下, 但是不建立目錄
unzip root.zip -d ./root		# 解壓到 ./root
unzip -o root.zip -d ./root		# 覆蓋已存在的檔案
unzip -n root.zip -d ./root		# 不覆蓋已存在的檔案
unzip -x README root.zip 		# 解壓時排除 README 檔案

tar

常見格式

  • -c:建立新的存檔檔案(Create)
  • -x:從存檔檔案中提取檔案(eXtract)
  • -t:列出存檔檔案中的內容(lisT)
  • -v:顯示 tar 命令執行的詳細資訊(Verbose)
  • -f:指定存檔檔案的名稱(File)
  • -z:在建立或提取存檔檔案時使用 gzip 壓縮演算法來進行壓縮或解壓縮(gzip)
  • -j:在建立或提取存檔檔案時使用 bzip2 壓縮演算法來進行壓縮或解壓縮(bzip2)
  • -C:指定 tar 命令的工作目錄(Change directory)

檢視內容

tar -tvf root.tar			# 檢視壓縮包內容

解壓

tar -xvf root.tar			# 按照實際壓縮的格式解壓到當前目錄下(f 必須置於 xv 後)
tar -xvf root.tar -C ./root	# 解壓到 ./root 下(./root 一定要存在)

# 如果存檔檔案是經過 gzip、bzip2 或 xz 壓縮的,則必須指定相應的壓縮演算法來解壓存檔檔案
tar -xzvf root.tar.gz
tar -xjvf root.tar.bz2
tar -xJvf root.tar.xz

上述解壓操作均為覆蓋模式。

壓縮

tar -cvf root.tar dir1/ dir2/ file...	# 將多個檔案/目錄壓縮為 root.tar 
tar -cvf root.tar ./* --exclude '*.o'	# 除 .o 外的其他檔案壓縮為 root.tar

# 壓縮存檔檔案
tar -czvf root.tar.gz  *				# 在建立 tar 存檔檔案時使用 gzip  壓縮新建立的存檔檔案
tar -cjvf root.tar.bz2 *				# 在建立 tar 存檔檔案時使用 bzip2 壓縮新建立的存檔檔案
tar -cJvf root.tar.xz  *				# 在建立 tar 存檔檔案時使用 xz    壓縮新建立的存檔檔案

分卷壓縮

# 將當前目錄下的所有文件分卷壓縮, 每個壓縮報的大小不超過 1MB
tar -czvf - ./* | split -b 1m -d - root.tar.gz.

上述命令將使用管道符將壓縮的存檔檔案傳送到 split 命令中,並將其分割成多個 1MB 大小的檔案,每個部分的檔名以 root.tar.gz. 開頭,並以數字結尾(如 root.tar.gz.00, root.tar.gz.01)等。

# 合併後解壓
cat root.tar.gz.* > root.tar.gz
tar -xzvf root.tar.gz

參考資料

  • Linux系統常用unzip命令詳解_unzip -o-CSDN部落格
  • Linux 打包命令 tar 詳解_linux tar-CSDN部落格

相關文章