linux-cmd-zip-unzip
linux-cmd-zip-unzip
参考地址
1.zip压缩
1.1.zip语法参数
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
# 常用压缩参数
-r 递归处理,将指定目录下的所有文件和子目录一并处理
-q 静默压缩
-v 显示详情,执行过程或版本信息
-x filename 压缩时排除符合条件的文件exclude,支持通配符
-<num> 设置压缩率,数字越大压得越狠,默认为 -9 全量压缩,-0 只打包不压缩
# 额外文件参数
-S 包含系统和隐藏文件。
-m 压缩并删除原始文件,慎用
-y 压缩时直接保存符号连接,而非该链接指向的源文件
-X 不保存额外的文件属性
# 压缩文件的检查修复
-T 检查备份文件内的每个文件是否正确无误
-F 修复已损坏的压缩文件,需要配置 --out 使用
# 压缩文件加注释
-c 给每个被压缩的文件加注释,交互式
-z 替压缩文件加注释,交互式,需要以句点结束
# 压缩文件时修改文件类型
-ll 压缩文件时,把LF+CR字符置换成LF字符
-l 压缩文件时,把LF字符置换成LF+CR字符
# 修改压缩文件的属性
-t<日期时间> 修改压缩文件的时间信息,格式:mmddyyyy or yyyy-mm-dd
-o 压缩文件时修改压缩文件的 modify 时间,以源文件中最新文件的更改时间的为准,可用
1.2.zip实例演示
- 压缩,默认显示压缩率
# 压缩文件和目录
zip -r aaa.zip /tmp # 递归处理子目录
zip -rq aaa.zip /tmp # 静默压缩
zip -rv aaa.zip /tmp # 显示压缩详情,in out 为压缩前后的文件大小,stored 为压缩率
zip -rv aaa.zip /tmp/ -x *argus.sock # 压缩式排除某些文件,支持通配符
[root@zuiyoujie data]# zip -rv aaa.zip /tmp/ -x *argus.sock -9
updating: tmp/ (in=0) (out=0) (stored 0%)
updating: tmp/hsperfdata_root/ (in=0) (out=0) (stored 0%)
updating: tmp/hsperfdata_root/31659 (in=32768) (out=4393) (deflated 87%)
updating: tmp/hsperfdata_root/1927 (in=32768) (out=4377) (deflated 87%)
updating: tmp/a.txt (in=0) (out=0) (stored 0%)
updating: tmp/b.txt (in=0) (out=0) (stored 0%)
updating: tmp/c.txt (in=0) (out=0) (stored 0%)
total bytes=65536, compressed=8770 -> 87% savings # 原文件大小 65536B,压缩后大小 8770B,压缩率 87%,也就是减少了 87% 的大小
[root@zuiyoujie data]# ll
total 24
-rw-r--r-- 1 root root 11240 May 18 15:07 aaa.zip # 实际查看文件大小,会稍大一些,应该是和磁盘分区有关,占得块大小问题
drwxr-xr-x 2 root root 4096 Mar 20 2020 backup
drwxr-xr-x 4 root root 4096 Feb 27 2020 supervisor
drwxr-xr-x 3 root root 4096 Feb 29 2020 wwwroot
- 从压缩文件 aaa.zip 中删除文件 a.txt
zip -dv aaa.zip a.txt
- 修复压缩文件
zip -F aaa.zip --out bbb.zip
[root@zuiyoujie data]# zip -F aaa.zip --out bbb.zip
Fix archive (-F) - assume mostly intact archive
Zip entry offsets do not need adjusting
copying: tmp/systemd-private-d7946d0592934cc4a68fdc99302fb8f2-chronyd.service-OvboxA/
copying: tmp/systemd-private-d7946d0592934cc4a68fdc99302fb8f2-chronyd.service-OvboxA/tmp/
copying: tmp/hsperfdata_root/
copying: tmp/hsperfdata_root/31659
copying: tmp/hsperfdata_root/1927
copying: tmp/a.txt
copying: tmp/b.txt
copying: tmp/c.txt
[root@zuiyoujie data]# zip -T aaa.zip
test of aaa.zip OK
- 压缩时删除源文件
[root@zuiyoujie data]# zip -rvm ccc.zip aaa.zip
updating: aaa.zip (in=11435) (out=11435) (stored 0%)
total bytes=11435, compressed=11435 -> 0% savings
zip diagnostic: deleting file aaa.zip
[root@zuiyoujie data]# ll
total 36
drwxr-xr-x 2 root root 4096 Mar 20 2020 backup
-rw-r--r-- 1 root root 11296 May 18 15:18 bbb.zip
-rw-r--r-- 1 root root 11599 May 18 15:25 ccc.zip
drwxr-xr-x 4 root root 4096 Feb 27 2020 supervisor
drwxr-xr-x 3 root root 4096 Feb 29 2020 wwwroot
- 压缩时加注释信息
# 给每个文件都加各自的注释,交互式
zip -rvc ddd.zip /tmp -x*sock
[root@zuiyoujie data]# zip -rv ddd.zip /tmp -x*sock -c
updating: tmp/ (in=0) (out=0) (stored 0%)
updating: tmp/b.txt (in=0) (out=0) (stored 0%)
updating: tmp/a.txt (in=0) (out=0) (stored 0%)
updating: tmp/c.txt (in=0) (out=0) (stored 0%)
Enter comment for tmp/:
001
Enter comment for tmp/b.txt:
004
Enter comment for tmp/a.txt:
Enter comment for tmp/c.txt:
total bytes=65536, compressed=8970 -> 86% savings
2.unzip解压缩
- unzip 为 .zip 压缩文件的解压缩程序
2.1.unzip语法参数
# 语法:
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
# 解压文件
-o overwrite files WITHOUT prompting,解压时强制覆盖现有文件
-n never overwrite existing files,解压时不会覆盖现有文件
# 检查文件
-t 对压缩文件中的每个文件进行检查
-l 列表显示压缩包的文件信息,包括 zip 时加入的注释信息,可用
-v 查看压缩文件详情
-z 查看压缩文件备注信息
# 其他参数
-d extract files into exdir,解压文件到指定目录
-x filename 解压时排除某些文件,支持通配符
-P<密码> 使用zip的密码选项。
-q quiet mode (-qq => quieter)
-j junk paths (do not make directories),解压时删除多级子目录
# 文件名处理
-s 将压缩文件中的全部文件名中的空白字符转换为下划线
-L 将压缩文件中的全部文件名改为小写。
# 输出文字结果
-X 解压缩时同时回存文件原来的UID/GID。
-M 将输出结果送到more程序处理。
-c 解压缩并转换为字符打印到屏幕上,乱码慎用
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换,乱码慎用
2.2.unzip实例演示
- 解压文件
# 直接解压,默认遇到同名文件需要交互判断是否覆盖
unzip aaa.zip
# 将 aaa.zip 文件解压到 /tmp 目录下
unzip aaa.zip -d /tmp
- 解压或查看压缩文件
unzip -t aaa.zip # 检查压缩文件
unzip -l aaa.zip # 列表查看压缩文件详情
unzip -v aaa.zip # 查看压缩文件详情
- music.zip 压缩包里有多级子目录,并且子目录中其实都是歌曲文件,需要把这些文件都存放到根目录,而不是使用原有的额目录结构
unzip -j music.zip
- 官方示例
See "unzip -hh" or unzip.txt for more help. Examples:
unzip data1 -x joe => extract all files except joe from zipfile data1.zip
unzip -p foo | more => send contents of foo.zip via pipe into program more
unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer
作者:天生帅才 www.zuiyoujie.com
本文版权归作者和博客园共有,如果感觉有用可以随意打赏,感谢支持,欢迎转载