根据文件列表的内容创建 zip

根据文件列表的内容创建 zip

我创建了一个包含不同文件的文件,diff-files.txt其中包含 6000 多个文件路径。现在我想基于这些文件创建一个 zip 文件。

我知道我可以使用以下方法压缩多个文件:

zip diffedfiles.zip file1 folder1 -r

但对于 6000 多个文件,这种方法行不通。有没有办法根据内容进行压缩diff-files.txt

zip diffedfiles.zip {diff-files.txt} -r

像这样吗?

答案1

在 Linux 上,您可以使用 -@ 选项:

-@ 文件列表。如果文件列表指定为 -@ [MacOS 上不适用],zip 将从标准输入而不是命令行获取输入文件列表。例如,

          zip -@ foo

将会把列出的文件按行存储在 foo.zip 的标准输入中。

因此,就您而言,您应该能够执行以下操作:

cat diff-files.txt | zip -@ diffedfiles.zip

答案2

知道了:

zip diffedfiles.zip $(cat diff-files.txt) -r

答案3

有两种方法适用于所有平台:

1.

zip output.zip -r . [email protected]

2.

zip -@ - < filelist.txt > output.zip

这些方法不受命令行长度限制的影响。

相关内容