在 Bash 中从 zip 存档中提取大量文件的更好方法

在 Bash 中从 zip 存档中提取大量文件的更好方法

我有一个包含大量文件的 zip 档案和一个包含文件列表(约 10000 个项目)的纯文本文件,我需要使用 bash 从该档案中提取这些文件。

执行该操作的最佳方法是什么?显而易见的方法是针对文件的每一行运行解压缩,但它看起来很慢。

答案1

您不需要unzip在每个文件上运行,而是可以通过提供纯文本文件作为输入来在整个文件列表上运行:

unzip -j MyZipFile.zip <<<textfile

答案2

Unzip 支持指定要解压的文件:

unzip archive.zip file1.txt file2.txt file3.txt ...

但对于 10000 个项目,这种方法行不通。您可以将文件列表拆分为 100 个块,然后对它们运行解压缩,这比单独提取每个文件要快得多。

答案3

您可以使用 xargs 并-a选择一个选项来从文件中读取参数。如果存在这样的限制,可能还会使用一个标志将参数数量限制为适当的数量,以确保 shell 不会处理太多参数。

相关内容