压缩和解压缩是最常见的日常操作,在Linux系统中,常见压缩格式有十几种,比如:”.zip”、”.gz”、”.bz2″、“tar”、”.tar.gz”、”.tar.bz2″等,其中zip格式最为通用,它也是本文的主角 。
![linux解压zip包命令详细解释 linux压缩文件夹命令zip](http://imgsh.easyfang.com/230611/204033J12-0.jpg)
文章插图
压缩 zip
压缩文件
ziparchive.zipfile1 file2 file3 压缩目录
zip-r archive.zipfolder1/ folder2/ folder3/ 如果想排除指定目录或者文件,那么需要注意其中的陷阱,假设workspace目录结构如下所示:
# tree workspaceworkspace├──1│├──11.txt│└──12.txt├──2│├──21.txt│└──22.txt 现在我想压缩workspace目录,但是排除目录1和它下面所有的文件,对于zip命令来说可以使用 -x 选项排除文件和目录,能够想到的方法包括:
- zip -r workspace1.zip workspace/ -x workspace/1/*
- zip -r workspace2.zip workspace/ -x ‘workspace/1/*’
- zip -r workspace3.zip workspace/ -x workspace/1/
- zip -r workspace4.zip workspace/ -x workspace/1
提示:如果想排除多个文件或者目录,直接以相同的格式附在后面即可 。
zip-r workspace1.zip workspace/ -x 'workspace/1/*' 下面来看一下这4种写法的区别:
//方法1:仅排除目录1中的所有文件,目录1保留[root@almalinux~]#zip-rworkspace1.zipworkspace/-xworkspace/1/*adding:workspace/(stored0%)adding:workspace/1/(stored0%)adding:workspace/2/(stored0%)adding:workspace/2/21.txt(deflated99%)adding:workspace/2/22.txt(stored0%)[root@almalinux~]#unzip-lworkspace1.zipArchive:workspace1.zipLengthDateTimeName----------------------------011-21-202221:43workspace/011-21-202221:44workspace/1/011-21-202221:44workspace/2/155511-21-202221:44workspace/2/21.txt1911-21-202221:44workspace/2/22.txt----------------15745files//方法2:排除目录1和目录1中的文件,绝大多数情况下这正是我们所期望的[root@almalinux~]#zip-rworkspace2.zipworkspace/-x'workspace/1/*'adding:workspace/(stored0%)adding:workspace/2/(stored0%)adding:workspace/2/21.txt(deflated99%)adding:workspace/2/22.txt(stored0%) 从中可以得出以下结论:如果想要排除某个目录以及它下面的所有文件,那么必须添加 引号’ 和 星号*,例如:方法2:zip -r workspace2.zip workspace/ -x ‘workspace/1/*’
//方法3:本意是想排除目录1,但是却不能排除目录1下面的文件,因此相当于啥也没干 。//如果不加引号,但是有/,那么与workspace4.zip相比少了adding:workspace/1/(stored0%)[root@almalinux~]#zip-rworkspace3.zipworkspace/-xworkspace/1/adding:workspace/(stored0%)adding:workspace/1/11.txt(deflated19%)adding:workspace/1/12.txt(deflated55%)adding:workspace/2/(stored0%)adding:workspace/2/21.txt(deflated99%)adding:workspace/2/22.txt(stored0%)[root@almalinux~]#unzip-lworkspace3.zipArchive:workspace3.zipLengthDateTimeName----------------------------011-21-202221:43workspace/2111-21-202221:43workspace/1/11.txt2011-21-202221:44workspace/1/12.txt011-21-202221:44workspace/2/155511-21-202221:44workspace/2/21.txt1911-21-202221:44workspace/2/22.txt----------------1615 6 files://方法4:实际的意思是想排除文件1,而不是目录1,但是没有文件1,因此相当于什么也没干 。[root@almalinux~]#zip-rworkspace4.zipworkspace/-xworkspace/1adding:workspace/(stored0%)adding:workspace/1/(stored0%)adding:workspace/1/11.txt(deflated19%)adding:workspace/1/12.txt(deflated55%)adding:workspace/2/(stored0%)adding:workspace/2/21.txt(deflated99%)adding:workspace/2/22.txt(stored0%)[root@almalinux~]#unzip-lworkspace4.zipArchive:workspace4.zipLengthDateTimeName----------------------------011-21-202221:43workspace/011-21-202221:44workspace/1/2111-21-202221:43workspace/1/11.txt2011-21-202221:44workspace/1/12.txt011-21-202221:44workspace/2/155511-21-202221:44workspace/2/21.txt1911-21-202221:44workspace/2/22.txt----------------16157files//对于方法3和4来说,虽然它们的压缩文件大小不一样,但是效果是一样的[root@almalinux~]#llworkspace*.zip-rw-r--r--1rootroot837Nov2121:49workspace1.zip-rw-r--r--1rootroot685Nov2121:49workspace2.zip-rw-r--r--1rootroot1039Nov2121:51workspace3.zip-rw-r--r--1rootroot1191Nov2121:53workspace4.zip 从方法3和方法4可以看出:在某些场景下,目录后面加不加 / 表示的含义不同,例如这里不加 / 表示文件,加了/表示目录 。
如果workspace目录下有一个空文件夹3
[root@almalinux~]#mkdirworkspace/3[root@almalinux~]#treeworkspaceworkspace├──1│├──11.txt│└──12.txt├──2│├──21.txt│└──22.txt└──3 这时就可以看出 目录名3后面加不加/ 的区别了 。
//排除文件3[root@almalinux~]#zip-rworkspace5.zipworkspace/-xworkspace/3adding:workspace/(stored0%)adding:workspace/1/(stored0%)adding:workspace/1/11.txt(deflated19%)adding:workspace/1/12.txt(deflated55%)adding:workspace/2/(stored0%)adding:workspace/2/21.txt(deflated99%)adding:workspace/2/22.txt(stored0%)adding:workspace/3/(stored0%)//排除目录3[root@almalinux~]#zip-rworkspace6.zipworkspace/-xworkspace/3/adding:workspace/(stored0%)adding:workspace/1/(stored0%)adding:workspace/1/11.txt(deflated19%)adding:workspace/1/12.txt(deflated55%)adding:workspace/2/(stored0%)adding:workspace/2/21.txt(deflated99%)adding:workspace/2/22.txt(stored0%) 压缩为不超过指定大小的多个文件
可以使用 -s 选项+大小 创建指定大小的zip文件,单位可以包括 k (kilobytes), m (megabytes), g (gigabytes), 或者 t (terabytes).
zip-s 1g -r archivename.zipdirectory_name 还可以指定压缩比,压缩比越大文件越小,但是时间越长 。
-压缩级别 压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好 。
解压缩 Unzip
检查压缩文件是否损坏
unzip-tsomefile.zipNoerrorsdetectedincompresseddataofsomefile.zip 查看压缩文件的内容
unzip-larchive.zip 要查看文件的详细信息,如文件权限和存档文件的总大小,请使用 -Z 选项
unzip-Zarchive.zip 解压缩文件
unziparchive.zip 解压缩到指定目录
unzip archive.zip -d /path/to/destination/folder 抑制 unzip 命令的输出 (-q)
unzip-qarchive.zip 覆盖现有文件 (-o)
【linux解压zip包命令详细解释 linux压缩文件夹命令zip】unzip-oarchive.zip
推荐阅读
- 超好用的一款手机压缩神器 手机解压rar软件哪个好
- iPhone详细解压文件流程步骤 苹果怎么解压文件
- 一文读懂各种压缩格式区别 文件压缩成zip和rar的区别
- linux怎么查看磁盘分区
- 如何自我解压如何让心态平和
- 华为matebook d15锐龙版是linux版吗 华为matebook处理器
- arpr怎么注册,winrar解压密码忘了怎么解开
- 6款mac上好用的压缩软件 苹果电脑如何解压zip文件
- Linux实时查看日志的四种命令 linux查看日志命令详解
- 手机必装5个免费压缩app 手机解压缩软件哪个好