2020-12-23《linux必知必会》——常用压缩解压命令

linux下常见的的tar、rar、zip、7z 压缩解压缩命令

tar是用来打包和解压用的。之所以叫作tar是有一些历史原因:t代表tape(磁带);ar是 archive(档案)。因为早期的存储介质很小,人们习惯把文件打包然后存储到磁带上,那时候unix用的命令就是tar。因为linux是个开源生态,所以就沿袭下来继续使用tar。

tar安装包及安装方法rar安装包(最新安装包linuxrar.5.3.0)及安装方法zip安装包及安装方法;7z安装包及安装方法

-x代表 extract(提取)。-z代表gzip,也就是解压gz类型的文件。-v代表 verbose(显示细节),如果你不输入-v,就不会打印解压过程了。-f代表 file,这里指的是要操作文件,而不是磁带。 所以tar解压通常带有x和f,打包通常是c就是 create 的意思。

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包-f指定包的文件名

# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思

压缩

tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg

tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

tar zcvf /*.tar.gz ./zzz //当前目录下的zzz文件打包到根目录下并命名为*.tar.gz

 tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -zxvf **.tar.gz  //解压压缩文件**.tar.gz 

tar -xjvf file.tar.bz2   //解压 tar.bz2

tar -jxvf **.tar.bz2  //解压*.tar.bz2

tar -xZvf file.tar.Z   //解压tar.Z

tar zxvf / file.tar.zip -C /XXX/file   //把根目录下的file.tar.zip解压到/XXX/file下,前提要保证存在/XXX/file这个目录 

这个和cp命令有点不同,cp命令如果不存在这个目录就会自动创建这个目录!

unrar e file.rar //解压rar

unzip file.zip //解压zip

 

yum安装7-Zip

通过《为CentOS7/RHEL7安装EPEL 仓库(repo)》一文,安装RHEL EPEL Repo后,即可使用yum安装7ZIP。

命令如下:

yum install -y p7zip

7-Zip的使用

7zip命令有7z和7za,7za是精简版部分格式不支持,7z是全功能版的,建议使用7z。

7z {a|d|l|e|u|x} 压缩包文件名 {文件列表或目录,可选}:

a :向压缩包里添加文件或创建压缩包,如向303i.7z添加logo.jpg,执行:

7z a 303i.7z logo.jpg;

d :从压缩里删除文件,如将303i.7z里的logo.jpg删除,执行:

7z d 303i.7z logo.jpg

l :列出压缩包里的文件,如列出303i.7z里的文件,执行:

7z l 303i.7z

e :解压到当前目录,目录结构会被破坏,如303i.rar内有如下目录及文件a/b/c.html,执行:

7z e 303i.rar,目录a和b及文件c.html都会存放在当前目录下。

 

总结

1、*.tar 用 tar -xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar -xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar -xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar -xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压

10、*.7z 用 7z l *.7z  , 7z e *.rar

shell脚本小工具之万能解压和压缩器

#!/bin/bash
#脚本说明
#压缩案例: sh ./ext.sh en /root/a.zip ./test 压缩类型 压缩后的文件名 要压缩的文件或者目录
#解压案例: sh ./ext.sh de ./a.zip 压缩类型 解压的文件名 (默认当前目录)
type=$1 #压缩类型,en表示压缩,de表示解压
filename=$2 #文件名
to_filename=$3 #如果是压缩则是选择压缩的文件,解压则是输出的文件路径
ext="${filename##*.}" #获取到文件名的后缀
if [ ! $filename ]
then
        #没有传入参数
        echo 'error(100)not file(tar|gz|bz2|zip|rar)'
        exit 0
fi
if [ $type = 'en' ]
then
        #压缩至
        #匹配相应的文件
        case $ext in
        'tar')
                eval "tar cvf $filename $to_filename"
                ;;
        'gz')
                eval "tar zcvf $filename $to_filename"
                ;;
        'bz2')
                eval "tar jcvf $filename $to_filename"
                ;;
        'zip')
                eval "zip $filename $to_filename"
                ;;
        *)
                #不支持该类型
                echo 'error(101)This type is not supported(tar|gz|bz2|zip)'
                ;;
        esac
else
        #解压至
        #匹配相应的文件
        case $ext in
        'tar')
                eval "tar xvf $filename"
                ;;
        'gz')
                eval "tar zxvf $filename"
                ;;
        'bz2')
                eval "tar jxvf $filename"
                ;;
        'zip')
                eval "unzip $filename"
                ;;
        *)
                #不支持该类型
                echo 'error(101)This type is not supported(tar|gz|bz2|zip)'
                ;;
        esac
fi

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值