📜  Linux 中的 ZIP 命令和示例

📅  最后修改于: 2022-05-13 01:57:28.913000             🧑  作者: Mango

Linux 中的 ZIP 命令和示例

ZIP 是 Unix 的压缩和文件打包实用程序。每个文件都存储在扩展名为 .zip 的单个 .zip {.zip-filename} 文件中。

  • zip 用于压缩文件以减小文件大小,也用作文件打包实用程序。 zip 可用于许多操作系统,如 unix、linux、windows 等。
  • 如果您在两台服务器之间的带宽有限,并希望更快地传输文件,请压缩文件并进行传输。
  • zip 程序将一个或多个压缩文件连同有关文件的信息(名称、路径、日期、上次修改时间、保护和检查信息以验证文件完整性)放入单个 zip 存档中。可以使用单个命令将整个目录结构打包到 zip 存档中。
  • 2:1 到 3:1 的压缩比对于文本文件很常见。 zip 有一种压缩方法(放气),也可以存储不压缩的文件。 zip 自动为每个要压缩的文件选择两者中较好的一个。
    该程序可用于打包一组文件以进行分发;用于归档文件;并通过临时压缩未使用的文件或目录来节省磁盘空间。

句法 :

zip [options] zipfile files_list

创建 zip 文件的语法:

$zip myfile.zip filename.txt

从 zip 文件中提取文件

Unzip 将列出、测试或从 Unix 系统上常见的 ZIP 存档中提取文件。默认行为(无选项)是将指定 ZIP 存档中的所有文件提取到当前目录(及其下面的子目录)中。



Syntax :
$unzip myfile.zip 

选项 :
1. -d 选项:从 zip 存档中删除文件。创建 zip 文件后,您可以使用 -d 选项从存档中删除文件。
假设我们在当前目录中有以下文件,如下所示:
你好1.c
你好2.c
你好3.c
你好4.c
你好5.c
你好6.c
你好7.c
你好8.c

句法 :

$zip –d filename.zip file.txt
Command :
$zip –d myfile.zip hello7.c

从 myfile.zip 文件中删除 hello7.c 后,可以使用 unzip 命令恢复文件

Command:
$unzip myfile.zip
$ls command
Output :
hello1.c
hello2.c
hello3.c
hello4.c
hello5.c
hello6.c
hello8.c
The hello7.c file is removed from zip file

2. -u 选项:更新 zip 存档中的文件。此选项可用于更新指定的文件列表或向现有 zip 文件添加新文件。仅当 zip 存档中的现有条目的修改时间比 zip 存档中已有的版本更新时,才更新该条目。
句法:

$zip –u filename.zip file.txt


假设我们在当前目录中有以下文件,如下所示:
你好1.c
你好2.c
你好3.c
你好4.c

Command :
$zip –u myfile.zip hello5.c

从 myfile.zip 文件更新 hello5.c 后,可以使用 unzip 命令恢复文件

Command:
$unzip myfile.zip
$ls command
Output :
hello1.c
hello2.c
hello3.c
hello4.c
hello5.c
The hello5.c file is updated to the zip file

3. -m 选项:压缩后删除原始文件。实际上将指定的文件移动到 zip 存档中,这会在制作指定的 zip 存档后删除目标目录/文件。如果删除文件后目录变为空,则该目录也将被删除。在 zip 无误地创建存档之前,不会进行任何删除。这对于节省磁盘空间很有用,但删除所有输入文件有潜在危险。
句法 :

$zip –m filename.zip file.txt


假设我们在当前目录中有以下文件,如下所示:
你好1.c
你好2.c
你好3.c
你好4.c

Command :
$zip –m myfile.zip *.c

终端执行此命令后,结果如下:



Command:
$ls command
Output :
myfile.zip
//No other files of .c(extension) has been found

4. -r 选项:要递归压缩目录,请在 zip 命令中使用 -r 选项,它将递归压缩目录中的文件。此选项可帮助您压缩指定目录中存在的所有文件。

句法:

$zip –r filename.zip directory_name

假设我们在当前目录(docs)中有以下文件,如下所示:
Unix.pdf
甲骨文.pdf
linux.pdf

Command :
$zip –r mydir.zip docs
Output :
  adding: docs/            //Compressing the directory
  adding: docs/unix.pdf   // Compressing first file
  adding: docs/oracle.pdf // Compressing second file
  adding: docs/linux.pdf  //Compressing third file

5. -x 选项:在创建 zip 时排除文件。假设您正在压缩当前目录中的所有文件并希望排除一些不需要的文件。您可以使用 -x 选项排除这些不需要的文件。

句法 :

$zip –x filename.zip file_to_be_excluded


假设我们在当前目录中有以下文件,如下所示:
你好1.c
你好2.c
你好3.c
你好4.c

Command :
$zip –x myfile.zip hello3.c

执行此命令将压缩除 hello3.c 之外的所有文件

Command:
$ls command
Output :
myfile.zip //compressed file
hello3.c   //this file has been excluded while compressing

6. -v 选项:详细模式或打印诊断版本信息。通常,当应用于实际操作时,此选项会在压缩期间启用进度指示器的显示,并请求有关 zip 文件结构异常的详细诊断信息。
当 -v 是唯一的命令行参数,并且 stdin 或 stdout 未重定向到文件时,将打印诊断屏幕。除了带有程序名称、版本和发布日期的帮助屏幕标题外,还提供了一些指向 Info-ZIP 主页和分发站点的指针。然后,它会显示有关目标环境的信息(编译器类型和版本、操作系统版本、编译日期以及用于创建 zip 可执行文件的已启用可选功能)。

句法 :

$zip –v filename.zip file1.txt


假设我们在当前目录中有以下文件,如下所示:
你好1.c
你好2.c
你好3.c
你好4.c

Command
$zip -v file1.zip *.c
Output :
adding: hello1.c    (in=0) (out=0) (stored 0%)
  adding: hello2.c    (in=0) (out=0) (stored 0%)
  adding: hello3.c    (in=0) (out=0) (stored 0%)
  adding: hello4.c    (in=0) (out=0) (stored 0%)
total bytes=0, compressed=0 -> 0% savings