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

jan*_*anw 5 compression terminal

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

我知道我可以使用以下命令压缩多个文件:

zip diffedfiles.zip file1 folder1 -r
Run Code Online (Sandbox Code Playgroud)

但这不适用于 6000 多个文件。有没有办法根据 的内容压缩它diff-files.txt

zip diffedfiles.zip {diff-files.txt} -r
Run Code Online (Sandbox Code Playgroud)

像这样的东西?

小智 14

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

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

          zip -@ foo
Run Code Online (Sandbox Code Playgroud)

将在 foo.zip 中的 stdin 上每行列出一个文件。

所以在你的情况下,你应该能够做到:

cat diff-files.txt | zip -@ diffedfiles.zip
Run Code Online (Sandbox Code Playgroud)