在命令行中解压缩 Linux 上的多个文件

如果您曾经必须提取大量 zip 文件,您就会知道这可能是一个耗时且乏味的过程。 但是在 Linux 和其他类似 UNIX 的发行版上,有一种更简单的方法可以做到这一点。 在本文中,我们将向您展示如何仅使用一行代码解压缩多个 zip 文件。 所以让我们开始吧!

尝试想到的第一个命令

假设文件名为 1.zip、2.zip、3.zip 等。 我们想到的提取这些压缩文件的第一个命令是:

unzip *.zip 

但是,当您运行该命令时,终端会为您提供以下输出:

Archive:  1.zip caution: filename not matched:  2.zip caution: filename not matched:  3.zip 
解压多个文件时出错

好吧,这不是应该的。 可能是什么问题呢? 这将帮助我们更多地了解终端在 Linux 上的工作方式。

那么问题是什么?

当您使用通配符时

unzip 1.zip 2.zip 3.zip 

在任何命令中,shell 都会扩展该命令并将结果传递给程序,而不是由程序自己处理扩展。 这意味着我们之前的命令在执行之前实际上已扩展为以下内容:

这对您来说可能看起来很正常,因为当您以这种精确方式键入时,其他命令(如 mkdir)将创建三个单独的文件夹。 但是,Unzip 的工作方式与此不同。 Unzip 会将上述命令解释为提取 1.zip,然后在 1.zip 中提取另一个名为 2.zip.. 的压缩文件,以此类推第三个 zip 文件。 我们不希望这样,这就是它抛出错误的原因。

那么正确的命令是什么?

unzip '*.zip' 
使用正确的命令解压

使用正确的命令解压

这就是我们必须做的! unzip 命令现在可以完美运行。

概括

我希望您对 shell 在终端中的工作方式有所了解。 解压多个文件的正确方法就是在通配符前后加上(’)。 我希望你在编写 shell 或 python 脚本时记住这个巧妙的小技巧。