# Linux压缩命令速查
# rar&unrar
unrar e test.rar #提取仅文件(不包含其所在的目录)到当前目录
unrar x test.rar #提取文件并包含其完整路径
rar a filename.rar /path/to/file_or_folder #打包
rar l[t,b] filename.rar #列出档案[technical, bare]
rar v[t,b] filename.rar #列出压缩档案的详细信息[technical,bare]
unrar t filename.rar #测试是否可以成功解压
# zip&unzip / gzip&gunzip
gzip filename #将文件编码后得到filename.gz
gunzip filename.gz #解码后得到filename
# 为保留原文件,加上重定向
gzip -c filename > /path/to/filename.gz #将文件编码后得到filename.gz
gunzip -c /path/to/filename.gz > ./filename #解码后得到filename
gzip -l filename.gz #列出压缩档案的详细信息
gzip -t filename.gz #测试解压
zip filename.zip filename #压缩
unzip filename.zip #直接解压到当前目录
unzip filename.zip -d /path/to/folder #解压到指定目录
unzip -l filename.zip #列出压缩档案的详细信息
unzip -t filename.zip #测试解压
# tar
# 压缩
tar -cvf filename.tar.xz /path/to/file_or_folder #压缩为tar 或者.tar.xz
tar -czvf filename.tar.gz /path/to/file_or_folder #压缩为tar.gz or .tgz
tar -cjvf filename.tar.bz2 /path/to/file_or_folder #先压缩为.tar,再用bzip2压缩为.tar.bz2
tar -cjvhf filename.tar.bz2 /path/to/link_path #压缩带有软连接的文件或文件夹
tar -cZvf filename.tar.Z /path/to/file_or_folder #先打包为tar,再用compress(一般不自带该命令?)压缩,生成一个umcompress压缩过的包
# 对应解压
tar -xvf filename.tar.xz
tar -xzvf filename.tar.gz
tar -xjvf filename.tar.bz2
tar -xZvf filename.tar.Z
# 查看
tar -tvf filename.tar.gz
参数详解
五个命令中必选一个
- c: 建立压缩档案
- x:解压
- t:查看内容
- r:向压缩归档文件末尾追加文件
- u:更新原压缩包中的文件
这几个参数是可选的
- z:有gzip属性的
- j:有bz2属性的
- Z:有compress属性的
- v:显示所有过程
- O:将文件解开到标准输出
f必选参数
- f: 使用档案名字,这个参数是最后一个参数,后面只能接档案名。
# 批量解压
(来自wanghaotian学弟的使用场景的探索),有这样一个场景:
$ ls .
a.tgz b.tgz c.tgz ...
如何使用命令实现对每一个文件解压呢?
在当前文件夹下使用以下命令之一:
$ for f in *.tgz; do tar -xvzf "$f"; done
$ ls *.tgz | xargs -n1 tar xzvf
这将批量解压缩当前文件夹下的所有.tgz文件。如果需要解压缩其他格式的文件,只需将“*.tgz”更改为相应的文件名模式即可。
# 压缩比率
压缩同一个文件的一次测试:

初次得到压缩比率比较: tar.bz2>gzip>tgz>>zip>tar
参考:
https://www.jianshu.com/p/b835a4d5bb4e (opens new window)
https://www.cnblogs.com/dyh-air/articles/9069642.html (opens new window)
http://www.360doc.com/content/14/1212/11/18578054_432344502.shtml (opens new window)