将多个文件压缩到多个档案中

将多个文件压缩到多个档案中

运行 Linux。我的目录中有大约 150 个大型 CSV 文件;简单地zip -9对它们执行操作会产生一个仍然太大的单片文件。我希望它简单地将它们压缩成大约四到五个 zip 文件,每个 zip 文件包含 30-40 个 CSV;这样排序或跨 zip 顺序就不会成为问题,因为每个 zip 都是独立的。一定有一个简单的方法来做到这一点。有什么建议吗?

(是的,如果可能的话,zip 是首选格式)

答案1

-s 开关还不够吗?您可以使用 zip -s 将文件拆分为最大大小的文件,例如:

“zip -s 300m <2 gb 文件>”生成:

file.zip (300 mb, master file)
file.001.zip (300 mb)
file.002.zip (300 mb)
file.003.zip (300 mb)
file.004.zip (300 mb)
file.005.zip (300 mb)
file.006.zip (200 mb)

然后“unzip file.zip”将把所有内容一起解压缩。

答案2

使用split 在输入文件列表中:-)。

(未经测试,我已经包含了 rm 命令用于清理,请小心)。

ls *.csv > csvfiles
split -d -l30 - csvfiles < csvfiles
for i in csvfiles[0-9][0-9]; do
  zip "$i.zip" -@ < "$i"
done

rm csvfiles
rm csvfiles[0-9][0-9]

相关内容