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 files

unzip:检测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.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 files

unzip -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 files

zip:创建

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%)

最后更新于

这有帮助吗?