zip 是用于创建存档文件或压缩文件的命令。这使您可以压缩文件并为硬盘驱动器或可移动驱动器上的其他文件创建更多空间。此外,将文件 / 目录压缩使它们更便宜,更易于上传,下载甚至通过电子邮件发送它们。有压缩就有解压缩,我们使用 unzip 命令来解压缩文件并单独访问它们。

在开始讨论 zip 和 unzip 命令之前,让我们看看如何从命令行安装这些命令

安装 zip 和 unzip 命令

在 Ubuntu / Debian / Linux Mint 上安装,运行下面的命令

$ sudo apt install -y zip unzip
or
$ sudo apt-get install -y zip unzip

在 CentOS / RHEL / Fedora 上安装,运行下面的命令

$ sudo yum install -y zip unzip
or
$ sudo dnf install -y zip unzip

Zip 命令

压缩文件就像ABC一样简单,语法如下

$ zip OPTIONS archive.zip file

在你继续之前,有几点需要考虑

  • 在压缩文件之前,需要对正在压缩的文件和目录位置具有写权限
  • 解压缩或提取文件时,用户拥有文件 / 目录所有权

(1) 使用 zip 命令压缩单个文件和多个文件

假设当前目录中有文件 reports1.txt,将其压缩到名为 reports.zip 的归档文件中。

$ zip reports.zip reports1.txt

zip-single-file-linux

此外,您可以将多个文件压缩到一个存档中,如下所示

$ zip archive.zip file1 file2 file3

同样,假设我们有三个文件 reports1.txt、reports2.txt 和 reports3.txt。要将它们压缩到归档 reports.zip 文件中,运行该命令

$ zip reports.zip reports1.txt reports2.txt reports3.txt

zip-multiple-files-linux

(2) 向 zip 归档文件中添加文件 (-u)

At times, you may find the need to add a file to a zip archive. To do so, use the -u flag. For example, to add another file reports4.txt, run:

使用 -u 标志向 zip 归档文件中添加一个文件。例如:要添加另一个文件 reports4.txt,运行如下命令

$ zip -u reports.zip report4.txt

add-file-existing-zip-archive-linux

(3) 查看压缩文件的内容

$ zipinfo archive.zip

view-contents-zipped-file-linux

(4) 压缩当前目录下的所有文件 (*)

如果当前目录中有多个文件,可以使用通配符将它们全部压缩,如下面的语法所示

$ zip archive.zip *

例如,要将主目录中的所有文件压缩为 home.zip 归档文件,请执行以下命令。请确保您正在主目录中工作。

$ zip home.zip *

zipped-directory-linux

(5) 从归档中删除文件 (-d)

使用 -d 选项从归档文件中删除文件,例如:从压缩文件中删除 reports4.txt

$ zip -d reports.zip reports4.txt

(6) 压缩后删除文件 (-m)

正如您可能已经注意到的,原始文件即使在压缩或存档之后仍然保留。

files-after-zipped-linux

如果您希望在归档期间删除它们用以节省空间,请使用 -m 选项,如下所示

$ zip -m reports.zip reports1.txt reports2.txt reports3.txt

remove-orginal-files-after-zipping-linux

(7) 压缩目录 (-r)

到目前为止,我们已经了解了如何压缩文件。通常,您的任务是压缩目录,因为它们在大部分时间内占用更多的空间。

要压缩文件夹,请使用下面的语法,`-r` 选项递归地压缩文件夹。

$ zip -r archive.zip folder

例如,要将目录 data 压缩到归档文件 data.zip,请执行

$ zip -r data.zip data

zipped-a-folder-linux

与文件一样,您也可以将多个文件夹同时压缩,如图所示

$ zip -r archive.zip folder1 folder2 folder3

zipped-multiple-folders-linux

(8) 将文件压缩到另一个地方

要将文件压缩到当前目录以外的其他目标,只需在语法中指定压缩归档的路径

$ zip /path/to/destination/archive.zip file

For example, the file hello.txt is archived to file.zip file in the Documents/data/sales path.

例如,将文件 hello.txt 归档到 Documents/data/sales 目录

zip Documents/data/sales/file.zip hello.txt

zip-file-to-different-location

(9) 将文件和目录压缩到它们自己的归档中

如果出于某种原因,您希望将当前目录中的文件和目录压缩到它们各自的 zip 归档中,请使用 for 循环,如图所示

$ for i in *; do zip -r "${i%}.zip" "$i"; done

例如,下面的示例将文件 hello.txt 和 sales 文件夹分别压缩到各自的归档文件 hello.zip 和 sales.zip 中。

zipped-files-directories-for-loop-linux

Unzip 命令

该命令用于解压缩压缩后的文件和目录。让我们看一下该命令的几个示例用法

(1) 查看压缩文件的内容 (-l)

在解压缩文件或目录之前,可以使用 -l 选项查看归档文件的内容,如下所示

$ unzip -l archive.zip

例如:

$ unzip -l data.zip

list-contents-zipped-archive-linux

(2) 查看压缩文件的详细内容 (-Z)

要查看文件的详细信息,如文件权限和存档文件的总大小,请使用 -Z 选项,如图所示

$ unzip -Z data.zip

More-Details-zipped-files-linux

(3) 解压缩文件

解压缩压缩文件采用下面的语法,并在当前工作目录中进行。

$ unzip archive.zip

例如:

$ unzip data.zip

unzip-compressed-file-linux

(4) 将文件解压缩到另一个目录

要将归档文件提取或解压缩到不同的目的地,请使用 -d 选项并指定目的地路径

$ unzip archive.zip -d /path/to/destination/folder

例如:

$ unzip data.zip -d /home/linuxtechi/Documents

unzip-file-to-differnt-directory

(5) 从存档中解压缩一个或多个文件

通常,你会有一个包含多个文件的压缩文件。您可以选择只解压缩一个或两个文件,而不是完全解压存档。要实现这一点,请按照语法中所示指定文件

$ unzip archive.zip file1 file2

例如,要从归档文件 home.zip 中提取一个名为 hello.txt 的文件

$ unzip home.zip hello.txt

此外,您可以将文件提取到其他目标文件夹,而不是当前目录。例如:

$ unzip home.zip hello.txt -d Documents/data/sales

unzip-single-file-zipped-archive-linux

(6) 排除某些文件被解压 (-x)

正如您可以从存档中提取特定的文件一样,可以使用 -x 选项从解压缩中排除某些文件。

$ unzip archive.zip -x file1

例如,下面的示例将文件 file1.txt 和 file2.txt 排除在提取之外。

$ unzip archive.zip -x file1.txt file2.txt

exclude-files-while-unzipping-linux

(7) 抑制 unzip 命令的输出 (-q)

您可能已经注意到,显示解压缩文件和被解压缩文件位置的解压缩操作的详细信息会打印在终端上。要抑制此信息,请使用 -q 选项,如下所示

$ unzip -q data.zip

(8) 覆盖现有文件 (-o)

当您在同一个目录中运行两次 unzip 命令时,将提示是否替换、忽略提取或重命名现有文件,如下面的输出所示。

Prompt-before-overwriting-unzip-linux

如果您希望覆盖现有文件,而不需要提示,请使用 -o 选项,如下所示

$ unzip -o data.zip

Overwrite-files-during-unzip-linux

(9) 解压多个文件

最后,要一次性解压缩多个文件,请在所示语法中使用通配符

$ unzip  archive.zip  '*.txt'

注意:*.txt 参数要使用单引号包裹。

我的开源项目


鸠摩智首席音效师
472 声望9 粉丝

身强体健,龙精虎猛的活着。