zip_unzip
[TOC]
zip&unzip
unzip:解压
unzip: 查看,检测和解压zip文件.
命令格式
unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) ...] [-x xfile(s) ...] [-d exdir]
示例
unzip letters
unzip letters
# 该命令: 解压letters.zip文件到当前文件夹, 如果有必要会创建子文件夹
# 示例
bovenson@vmware:~/workspace$ tree -a
.
├── git
└── tmp.zip
1 directory, 1 file
bovenson@vmware:~/workspace$ unzip tmp
Archive:  tmp.zip
   creating: tmp/
   creating: tmp/b/
 extracting: tmp/b/b
 extracting: tmp/b/.b
 extracting: tmp/.a
 extracting: tmp/a
 extracting: tmp/tmp.zip
 extracting: tmp/b.zip
 extracting: tmp/a.zip
bovenson@vmware:~/workspace$ tree -a
.
├── git
├── tmp
│   ├── a
│   ├── .a
│   ├── a.zip
│   ├── b
│   │   ├── b
│   │   └── .b
│   ├── b.zip
│   └── tmp.zip
└── tmp.zip
3 directories, 8 files仅解压文件
unzip -j letters
# 该命令: 解压letters.zip中所有的文件(不包括文件夹)到当前文件夹
# 示例
bovenson@vmware:~/workspace$ tree -a
.
├── git
└── tmp.zip
1 directory, 1 file
bovenson@vmware:~/workspace$ unzip -j tmp
Archive:  tmp.zip
 extracting: b
 extracting: .b
 extracting: .a
 extracting: a
replace tmp.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: n
 extracting: b.zip
 extracting: a.zip
bovenson@vmware:~/workspace$ tree -a
.
├── a
├── .a
├── a.zip
├── b
├── .b
├── b.zip
├── git
└── tmp.zip
1 directory, 7 files解压指定文件到指定文件夹
unzip tmp.zip '*.zip' -d ./git
# 该命令: 解压指定文件到指定文件夹
# 示例
bovenson@vmware:~/workspace$ tree -a
.
├── git
└── tmp.zip
1 directory, 1 file
bovenson@vmware:~/workspace$ unzip tmp.zip '*.zip' -d ./git
Archive:  tmp.zip
 extracting: ./git/tmp/tmp.zip
 extracting: ./git/tmp/b.zip
 extracting: ./git/tmp/a.zip
bovenson@vmware:~/workspace$ tree -a
.
├── git
│   └── tmp
│       ├── a.zip
│       ├── b.zip
│       └── tmp.zip
└── tmp.zip
2 directories, 4 filesunzip:检测zip文件
unzip -t letters
unzip -t letters
# 该命令: 检测letters.zip文件, 并输出详细的检测报告
# 示例
bovenson@vmware:~/workspace$ unzip -t tmp.zip
Archive:  tmp.zip
    testing: tmp/                     OK
    testing: tmp/b/                   OK
    testing: tmp/b/b                  OK
    testing: tmp/b/.b                 OK
    testing: tmp/.a                   OK
    testing: tmp/a                    OK
    testing: tmp/tmp.zip              OK
    testing: tmp/b.zip                OK
    testing: tmp/a.zip                OK
No errors detected in compressed data of tmp.zip.unzip -tq letters
unzip -tq letters
# 该命令: 检测letters.zip文件, 只输出检测结果概括(Ok or not OK)
# 示例
bovenson@vmware:~/workspace$ unzip -tq tmp.zip
No errors detected in compressed data of tmp.zip.unzip: 查看
unzip -l file.zip
unzip -l file.zipunzip -l file.zip
# 该命令: 查看压缩文件内文件详情
# 示例:
bovenson@vmware:~/workspace$ unzip -l tmp
Archive:  tmp.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2017-03-17 16:22   tmp/
        0  2017-03-17 15:49   tmp/b/
        0  2017-03-17 15:49   tmp/b/b
        0  2017-03-17 15:49   tmp/b/.b
        0  2017-03-17 15:48   tmp/.a
        0  2017-03-17 15:48   tmp/a
      840  2017-03-17 15:56   tmp/tmp.zip
      970  2017-03-17 16:18   tmp/b.zip
      550  2017-03-17 15:50   tmp/a.zip
---------                     -------
     2360                     9 filesunzip -v file.zip
unzip -v file.zip
# 该命令: 查看压缩文件内文件详情(更详细)
# 示例:
bovenson@vmware:~/workspace$ unzip -v tmp.zip
Archive:  tmp.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 2017-03-17 16:22 00000000  tmp/
       0  Stored        0   0% 2017-03-17 15:49 00000000  tmp/b/
       0  Stored        0   0% 2017-03-17 15:49 00000000  tmp/b/b
       0  Stored        0   0% 2017-03-17 15:49 00000000  tmp/b/.b
       0  Stored        0   0% 2017-03-17 15:48 00000000  tmp/.a
       0  Stored        0   0% 2017-03-17 15:48 00000000  tmp/a
     840  Stored      840   0% 2017-03-17 15:56 c53171a8  tmp/tmp.zip
     970  Stored      970   0% 2017-03-17 16:18 b29e9c36  tmp/b.zip
     550  Stored      550   0% 2017-03-17 15:50 ab81376e  tmp/a.zip
--------          -------  ---                            -------
    2360             2360   0%                            9 fileszip:创建
zip stuff *
# 把当前目录下所有非'.'开头的文件打包为 stuff.zip 文件, .zip自动追加, 除非名称包含.字符
# 想要打包以'.'开头的所有文件可以使用:
# 不能打包子文件夹下内容
zip stuff * .*
# 使用选项参数[r]打包一个完整的文件夹(包括'.'开头文件和子文件夹内容)
zip -r foo foo
# 第一个foo为生成的zip文件名, 如果名称中包含'.', 则不会追加'.zip'后缀, 否则会自动追加'.zip'后缀
# 只打包文件, 而不打包目录
zip -j foo foo/*
# 如果磁盘空间不够用, 可以先打包一个然后使用[m]选项一个个得添加到压缩文件并将该文件删除
# 比如有三个文件(夹)tom, dick, harry, 可以这样:
zip -rm foo foo/tom
zip -rm foo foo/dick
zip -rm foo foo/harry
# [rm]选项, 在递归添加后将该文件删除
# 使用[s]选项来创建分卷压缩文件
# 单位有k(KB),m(MB),g(GB),t(TB)
zip -s 2g -r split.zip foo
# 如果一个文件大小为5G, 且压缩后总大小也是5G(仅示例), 则会生成3个文件:2g的split.z01, 2g的split.z02 和 1g的split.zip
zip foo.zip c --out bar.zip
# 该命令: 读取foo.zip(分卷压缩文件也可以)并添加文件c, 生成新的压缩文件 bar.zip# [x] 选项: 排除一些文件
zip -r tmp.zip tmp -x *.zip
# 该命令: 打包当前路径下文件/文件夹tmp, 但会跳过所有以'.zip'结尾的文件
# 示例:
bovenson@vmware:~/workspace$ tree
.
├── c
├── git
└── tmp
    ├── a
    ├── a.zip
    ├── b
    │   └── b
    ├── b.zip
    └── tmp.zip
3 directories, 6 files
bovenson@vmware:~/workspace$ zip -r tmp tmp -x *.zip
  adding: tmp/ (stored 0%)
  adding: tmp/b/ (stored 0%)
  adding: tmp/b/b (stored 0%)
  adding: tmp/b/.b (stored 0%)
  adding: tmp/.a (stored 0%)
  adding: tmp/a (stored 0%)
bovenson@vmware:~/workspace$ zip -r tmp tmp
updating: tmp/ (stored 0%)
updating: tmp/b/ (stored 0%)
updating: tmp/b/b (stored 0%)
updating: tmp/b/.b (stored 0%)
updating: tmp/.a (stored 0%)
updating: tmp/a (stored 0%)
  adding: tmp/tmp.zip (stored 0%)
  adding: tmp/b.zip (stored 0%)
  adding: tmp/a.zip (stored 0%)最后更新于
这有帮助吗?