我创建了一个包含不同文件的文件,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
这些方法不受命令行长度限制的影响。