在本文中,我们将学习如何在 Linux 中解压缩多个文件。 Zip 文件是一种压缩文件,它提供了一种通过 Internet 传输数据的理想方式。
使用命令可以轻松提取这些文件,但是如果您必须解压缩数千个文件怎么办? 手动解压缩每个文件会花费太多时间。
值得庆幸的是,我们可以利用 power shell 脚本来为我们自动化这项工作。 因此,让我们看看如何一次解压缩多个文件,因为我们使用的是 shell 脚本,所以这种方法将适用于所有发行版。
批量解压缩文件夹中所有 zip 文件的最简单方法
在我们继续使用更复杂、可定制的方法之前,这里有一个快速的方法:
unzip *.zip OR unzip *.zip -d /path/to/destination/folder
就是这样。 但是,此命令将解压缩文件夹中存在的每个文件。 您可以使用一些更可定制的 BASH 命令,例如 for、if-else 等来决定要解压缩的文件。
让我们看一下使用 for 循环进行批量解压缩。
批量解压缩同一文件夹中的多个文件
如果您有一个包含多个要解压缩的文件的文件夹,您可以在该文件夹中执行以下代码以将它们全部解压缩。
for z in *.zip; do unzip "$z"; done
如果您有任何编程经验,您会认识到这只是一个简单的 for 循环。 在这种情况下,for 循环遍历最后具有“.zip”扩展名的文件列表并运行 unzip
对他们下达命令。 此代码将提取所有扩展名为 .zip 的文件。
解压缩目录下所有子文件夹中的所有文件
如果您有一个包含多个子文件夹的文件夹,所有子文件夹都包含需要解压缩的 zip 文件,您可以运行此命令将它们全部解压缩。
for k in $(find ./ -type f -name '*.zip') ; do unzip $k ; done
该命令在某个目录下查找所有带有 *zip 扩展名的文件,然后将它们解压缩。 所有文件都提取到当前工作目录中。
如果你没有 unzip
软件,运行代码时会出错。 以下是在系统上安装 unzip 的方法:
- Debian / Ubuntu / Mint / Debian 衍生产品
sudo apt install unzip
- Fedora / 红帽 / CentOS
sudo dnf install zip
- Arch / Manjaro / 基于 Arch 的发行版
sudo pacman -S unzip
- OpenSuse
sudo zypper install unzip
补充笔记
这 *.zip
被称为正则表达式(Regular Expressions)。 在这种情况下,正则表达式告诉系统选择开头有任何内容但结尾必须有“.zip”的文件。 (例如 a.zip、b.zip、je3j3je9e.zip)
如果您不想提取文件夹中的所有文件,您可以操作正则表达式来选择您想要的文件。 正则表达式是一种非常强大的语言,您可以在此处了解更多信息。
结论
这只是 shell 脚本可以帮助您自动化日常任务的方式之一。 您可以修改此程序以满足您的需要。 祝你解压顺利!