如何在 Unix 命令行上压缩/解压文件


介绍

在 Linux 中,压缩和解压文件是一种非常常见的操作。出于以下原因,我们需要将许多文件压缩成一个文件。

  • 它节省了系统的磁盘空间。

  • 我们可以将多个文件保存在一个文件中。这也有助于将此压缩文件复制到另一个系统。

当我们拥有一个压缩文件时,我们也应该知道如何解压它以获取所有所需的文件。因此,压缩和解压命令在 Linux 中非常重要。在本文中,我们将学习各种压缩和解压命令。

使用基本的 zip 和 unzip 命令

首先,Linux 系统中应该存在“zip”和“unzip”命令。如果这些命令不存在,请使用以下命令安装。

$ sudo apt install zip
$ sudo apt install unzip

现在,让我们创建 4 个文本文件。

$ touch 1.txt 2.txt 3.txt 4.txt
$ ls
1.txt  2.txt  3.txt  4.txt

将所有 4 个文件压缩到一个名为“all”的文件中

$ zip all *.txt
   adding: 1.txt (stored 0%)
   adding: 2.txt (stored 0%)
   adding: 3.txt (stored 0%)
   adding: 4.txt (stored 0%)

我们可以看到创建了 all.zip 文件,其中包含 1.txt、2.txt、3.txt、4.txt。

$ ls
1.txt  2.txt  3.txt  4.txt  all.zip

现在让我们删除所有 4 个文件并解压 all.zip。我们可以看到所有 4 个文本文件。

$ rm *.txt

$ unzip all.zip
Archive:  all.zip
   extracting: 1.txt
   extracting: 2.txt
   extracting: 3.txt
   extracting: 4.txt

$ ls
1.txt  2.txt  3.txt  4.txt  all.zip

将文件解压到目标目录

在前面的示例中,我们已经看到所有文本文件都解压到当前路径。建议将文件解压到不同的目录,以便解压的文件不会与当前路径中的其他文件混淆。

我们可以使用以下命令将“all.zip”解压到目录“new-all”

$ unzip -q all.zip -d new-all
$ ls new-all/
1.txt  2.txt  3.txt  4.txt

压缩时排除特定文件

在某些情况下,如果我们需要排除某些文件进行压缩,可以使用以下命令。

$ zip all 1.txt 2.txt 3.txt -x 4.txt
updating: 1.txt (stored 0%)
updating: 2.txt (stored 0%)
updating: 3.txt (stored 0%)

从输出中,我们可以看到 all.zip 中不包含 4.txt。

让我们解压“all.zip”。

$ unzip -q all.zip -d 4.txt-not-there

$ ls 4.txt-not-there/
1.txt  2.txt  3.txt

从上面的输出中,我们可以看到“4.txt”不存在。

在不解压的情况下查找压缩文件中的所有文件

在某些情况下,如果我们需要查看压缩文件中有哪些文件,可以使用以下命令。

$ unzip -l all.zip

Archive:  all.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2016-02-11 22:25   1.txt
        0  2016-02-11 22:25   2.txt
        0  2016-02-11 22:25   3.txt
---------                     -------
        0                     3 files

使用密码保护您的压缩文件

在某些情况下,如果我们需要使用密码保护压缩文件,可以使用以下命令。

$ zip -e -r password-protected new-all/

Enter password:
Verify password:
   adding: new-all/ (stored 0%)
   adding: new-all/4.txt (stored 0%)
   adding: new-all/2.txt (stored 0%)
   adding: new-all/3.txt (stored 0%)
   adding: new-all/1.txt (stored 0%)

我们可以看到系统提示用户输入密码,并创建了“password-protected.zip”。

$ ls
1.txt  2.txt  3.txt  4.txt  4.txt-not-there  all.zip  new-all  password-protected.zip

现在让我们使用正确的密码解压“password-protected.zip”。

$ unzip password-protected.zip

Archive:  password-protected.zip
[password-protected.zip] new-all/4.txt password:
replace new-all/4.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
   extracting: new-all/4.txt
replace new-all/2.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
   extracting: new-all/2.txt
replace new-all/3.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
   extracting: new-all/3.txt
replace new-all/1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
   extracting: new-all/1.txt

现在尝试使用错误的密码执行相同的“unzip”命令。

$ unzip password-protected.zip
Archive:  password-protected.zip
[password-protected.zip] new-all/4.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: new-all/4.txt           incorrect password
[password-protected.zip] new-all/2.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: new-all/2.txt           incorrect password
[password-protected.zip] new-all/3.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: new-all/3.txt           incorrect password
[password-protected.zip] new-all/1.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: new-all/1.txt           incorrect password

我们可以看到它没有成功。

结论

通过本文,我们学习了如何使用“zip”和“unzip”命令。还学习了使用各种参数执行密码保护的压缩文件、将压缩文件解压到目标目录以及在压缩时排除某些文件。

更新于:2023年3月29日

347 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告