一、zip
zip命令的功能是用于压缩文件,解压命令为unzip。通过zip命令可以将文件打包成.zip格式的压缩包,里面会包含文件的名称、路径、创建时间、上次修改时间等等信息 。
使用格式:
zip [选项] 压缩包名 源文件或源目录列表
zip [OPTIONS] [ZIPFILE [FILE...]]
常用参数:
参数 | 意义 |
---|---|
-r | 递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩 |
-m | 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中 |
-v | 显示详细的压缩过程信息 |
-q | 在压缩的时候不显示命令的执行过程 |
-z | 替压缩文件加上注释 |
-u | 更新压缩文件,即往压缩文件中添加新文件 |
-e | 加密 |
-d | 更新压缩包内文件 |
-n<字尾字符串> | 不压缩具有特定字尾字符串的文件 |
-压缩级别 | 压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好 |
示例
(1)压缩指定文件。
zip passwd.zip /etc/passwd
adding: etc/passwd (deflated 58%)
输出中 deflated 58% 表示压缩率为 58%,即压缩后的文件大小是原文件的 42%。
(2)压缩文件时进行加密。
zip -e passwd.zip /etc/passwd
Enter password:
Verify password:
adding: etc/passwd (deflated 58%)
(3)使用 -r 选项递归压缩指定目录。
zip -r shell.zip shell
adding: shell/ (stored 0%)
adding: shell/sleepParent.sh (stored 0%)
adding: shell/sleep.sh (deflated 22%)
adding: shell/dir/ (stored 0%)
adding: shell/dir/test.sh (stored 0%)
(4)使用 -r 和 -0 选项只打包不压缩指定目录。
zip -r -0 shell.zip shell
(5)静默模式执行 zip,不显示 zip 命令执行过程。
zip -rq shell.zip shell
(6)向压缩文件追加文件。比如向上面生成的 shell.zip 追加文件 /etc/passwd。
zip -g shell.zip /etc/passwd
adding: etc/passwd (deflated 58%)
(7)从 zip 压缩文件中删除指定文件。
zip -d shell.zip /etc/passwd
deleting: etc/passwd
(8)压缩文件时显示已压缩的条目数和剩余条目数。
zip -dg -r shell.zip shell
0/ 5 adding: shell/ (stored 0%)
1/ 4 adding: shell/sleepParent.sh (stored 0%)
2/ 3 adding: shell/sleep.sh (deflated 22%)
3/ 2 adding: shell/dir/ (stored 0%)
4/ 1 adding: shell/dir/test.sh (stored 0%)
第一列表示已压缩的条目数,第二列表示剩余条目数。如果想显示已处理的字节和剩余的字节数,可以使用 -db 选项。
二、unzip
unzip 命令用于列出、测试和提取 ZIP 存档中的压缩文件。
如果 unzip 不跟任何选项(默认行为),会将指定的 ZIP 存档文件解压到当前目录。
命令格式:
unzip [-Z] [OPTIONS] [ZIP_FILE...] [FILE...] [-x FILE...] [-d EXDIR]
[ZIP_FILE…] 表示 ZIP 存档文件,[FILE…] 表示待处理的 ZIP 存档文件中的文件列表,[-x FILE…] 表示不处理的文件列表,[-d EXDIR] 表示解压缩后的文件存放的目录。文件名均可使用通配符表示。
注意,unzip 可以不跟任何选项和参数,单独执行 unzip 将打印简要帮助信息。
常用参数:
选项 | 说明 |
---|---|
--help | 帮助信息 |
--version | 显示命令版本信息 |
-c | 将解压结果送到标准输出 |
-f | 解压时更新现有的文件,即仅解压磁盘上已经存在且比磁盘副本更新的文件。默认情况下,在覆盖之前解压缩查询,但是-o选项可以用于抑制查询 |
-l | 显示压缩包内文件的详细信息。将打印指定文件的名称、未压缩文件大小、修改日期和时间,以及所有指定文件的总计。 |
-p | 将解压结果送到标准输出,不对字符转换。只有文件数据被发送到stdout,文件总是以二进制格式提取 |
-t | 检查压缩文件的正确性。该选项提取内存中的每个指定文件,并将扩展文件的CRC(循环冗余校验,增强校验和)与原始文件的存储CRC值进行比较。 |
-T | 将存档上的时间戳设置为每个归档中最新文件的时间戳。这对应于zip的-go选项,但它可以用于通配符zip文件(例如,“unzip –T *.zip”),而且速度要快得多 |
-u | 更新现有文件,并在需要时创建新文件。该选项执行与-f选项相同的功能 |
-v | 列出存档文件(详细格式)或显示诊断版本信息。 |
-z | 仅显示压缩文件的备注信息 |
-a | 解压时,对文本文件做字符转换 |
-n | 解压时,不覆盖原有的文件 |
-N | 将文件注释解压缩为Amiga文件。 |
-o | 不提示用户,覆盖原有文件 |
-P | 解压时,输入密码 |
-q | 静默模式 |
常用示例
(1)使用 -Z 选项查看 ZIP 归档文件 test.zip 的整体信息。
unzip -Z test.zip
Archive: test.zip
Zip file size: 1321 bytes, number of entries: 2
-rw-r--r-- 3.0 unx 1552 tx defN 19-Jan-04 14:56 etc/passwd
-rw-r--r-- 3.0 unx 642 tx defN 19-Jan-04 14:56 etc/group
2 files, 2194 bytes uncompressed, 1005 bytes compressed: 54.2%
(2)将压缩文件解压缩至当前目录。
unzip test.zip
(3)如果当前目录存在同名的文件,解压缩时不覆盖原有文件。
unzip -n test.zip
(4)解压缩时覆盖原有文件,不进行询问。
unzip -o test.zip
(5)将压缩文件解压缩至指定目录。
mkdir dir
unzip test.zip -d dir
(6)仅显示 zip 文件的注释说明,不解压。
unzip -z test.zip
Archive: test.zip
this is test.zip's comment
(7)仅查看 zip 文件中的文件列表,不解压。
unzip -l test.zip
Archive: test.zip
this is test.zip's comment
Length Date Time Name
--------- ---------- ----- ----
1552 01-04-2019 14:56 etc/passwd
642 01-04-2019 14:56 etc/group
--------- -------
2194 2 files
网友评论