Linux 命令- zip 和 unzip

zip 命令

        zip 压缩目录也可以压缩文件,压缩目录时,需要指定目录下的文件

1.命令格式

1
zip [参数] [压缩名] [文件或目录]

2.命令参数

  • -A 调整可执行的自动解压缩文件。
  • -b<工作目录> 指定暂时存放文件的目录。
  • -c 替每个被压缩的文件加上注释。
  • -d 从压缩文件内删除指定的文件。
  • -D 压缩文件内不建立目录名称。
  • -f 此参数的效果和指定”-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
  • -F 尝试修复已损坏的压缩文件。
  • -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。 - -h 在线帮助。
  • -i<范本样式> 只压缩符合条件的文件。
  • -j 只保存文件名称及其内容,而不存放任何目录名称。
  • -J 删除压缩文件前面不必要的数据。
  • -k 使用MS-DOS兼容格式的文件名称。
  • -l 压缩文件时,把LF字符置换成LF+CR字符。
  • -ll 压缩文件时,把LF+CR字符置换成LF字符。
  • -L 显示版权信息。
  • -m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
  • -n<字尾字符串> 不压缩具有特定字尾字符串的文件。
  • -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
  • -q 不显示指令执行过程。
  • -r 递归处理,将指定目录下的所有文件和子目录一并处理。
  • -S 包含系统和隐藏文件。
  • -t<日期时间> 把压缩文件的日期设成指定的日期。
  • -T 检查备份文件内的每个文件是否正确无误。
  • -u 更换较新的文件到压缩文件内。
  • -v 显示指令执行过程或显示版本信息。
  • -V 保存VMS操作系统的文件属性。
  • -w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
  • -x<范本样式> 压缩时排除符合条件的文件。
  • -X 不保存额外的文件属性。
  • -y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
  • -z 替压缩文件加上注释。
  • -$ 保存第一个被压缩文件所在磁盘的卷册名称。
  • -<压缩效率> 压缩效率是一个介于1-9的数值。

3.命令功能

        zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有 “.zip” 扩展名的压缩文件。

4.使用实例

实例1:将 test.txt 文件压缩为 test.zip 文件

        命令

1
zip test.zip test.txt

        输出

1
2
[root@localhost test]# zip test.zip test.txt
adding: test.txt (deflated 35%)

实例2:压缩率为1,压缩 test.txt 文件

        命令

1
zip -1 test.zip test.txt

        输出

1
2
[root@localhost test]# zip -1 test.zip test.txt
adding: test.txt(deflated 35%)

        说明

        压缩率为1,最高压缩率,当然也是最慢的压缩方法。但上例压缩率依然为35,因为压缩文件为文本文件,压缩率基本不变。

实例3:递归压缩子目录

        命令

1
zip -r test.zip /test/

        输出

1
2
3
4
[root@localhost test]# zip -r test.zip /test/
adding: test/ (stored 0%)
adding: test/test/ (stored 0%)
adding: test/test.txt (deflated 35%)

实例4:删除已有 zip 文件中文件

        命令

1
zip -d test.zip test/test.txt

        输出

1
2
3
4
5
6
[root@localhost test]# zip -r test.zip test
adding: test/ (stored 0%)
adding: test/test/ (stored 0%)
adding: test/test.txt (deflated 35%)
[root@localhost test]# zip -d test.zip test/test.txt
deleting: test/test.txt

实例5:向已有 zip 文件增加压缩文件

        命令

1
zip -m test.zip ./test/test.txt

        输出

1
2
[root@localhost test]# zip -m test.zip ./test/test.txt
adding: test/test.txt (deflated 35%)

实例6:排除指定文件不压缩

        命令

1
zip -r test.zip test-x ./test/test.txt

        输出

1
2
3
4
[root@localhost test]# zip -r test.zip test-x ./test/test.txt
updating: test/ (stored 0%)
updating: test/test/ (stored 0%)
updating: test/test2.txt (deflated 63%)

unzip 命令

        unzip 用来解压 zip 压缩的压缩文件

1.命令格式

1
unzip [参数] [.zip文件] [目录]

2.命令参数

  • -c 将 解压缩的结果显示到屏幕上,并对字符做适当的转换。

  • -f 更 新现有的文件。

  • -l 显 示压缩文件内所包含的文件。

  • -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任 何的转换。

  • -t 检 查压缩文件是否正确。,但不解压。

  • -u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中 的其他文件解压缩到目录中。

  • -v 执 行是时显示详细的信息。或查看压缩文件目录,但不解压。

  • -z 仅 显示压缩文件的备注文字。

  • -a 对 文本文件进行必要的字符转换。

  • -b 不 要对文本文件进行字符转换。

  • -C 压 缩文件中的文件名称区分大小写。

  • -j 不 处理压缩文件中原有的目录路径。

  • -L 将 压缩文件中的全部文件名改为小写。

  • -M 将 输出结果送到more程 序处理。

  • -n 解 压缩时不要覆盖原有的文件。

  • -o 不 必先询问用户,unzip执 行后覆盖原有文件。

  • -P<密码> 使 用zip的密码选项。

  • -q 执 行时不显示任何信息。

  • -s 将 文件名中的空白字符转换为底线字符。

  • -V 保 留VMS的文件版本信 息。

  • -X 解 压缩时同时回存文件原来的UID/GID。

  • [.zip文件] 指定.zip压缩文件。

  • [文件] 指定 要处理.zip压缩文 件中的哪些文件。

  • -d<目录> 指 定文件解压缩后所要存储的目录。

  • -x<文件> 指 定不要处理.zip压 缩文件中的哪些文件。

  • -Z unzip -Z等 于执行zipinfo指 令。

3.命令功能

        unzip 为 zip 压缩文件的解压缩程序。

4.使用实例

实例1:解压缩 test.zip

        命令

1
unzip test.zip

        输出

1
2
3
4
5
[root@localhost test]# unzip test.zip
Archive: test.zip
creating: test/
creating: test/test/
inflating: test/test2.txt

实例2:查看压缩文件目录及文件信息,并不解压

        命令

1
unzip -v test.zip

        输出

1
2
3
4
5
6
7
8
9
[root@localhost test]# unzip -v test.zip
Archive: test.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- --------------- -------- ----
0 Stored 0 0% 10-08-2015 22:41 00000000 test/
0 Stored 0 0% 10-08-2015 22:24 00000000 test/test/
2117 Defl:N 781 63% 10-08-2015 22:41 ef2699cd test/test2.txt
-------- ------- --- -------
2117 781 63% 3 files

其他应用

1.将压缩文件 test.zip 在指定目录 /tmp/ 下解压,如果有相同的文件存在,要求 unzip 命令不覆盖原来的文件

1
[root@mysql test]# unzip -n test.zip -d /tmp

2.将压缩文件 test.zip 在指定目录 /tmp/ 下解压缩,如果有相同文件存在,要求 unzip 命令 覆盖原来的文件

1
[root@mysql test]# unzip -o test.zip -d /tmp

使用 unzip “*.zip” 解压当前目录下的所有 zip 文件

1
ls *.zip |xargs -nl unzip