将许多文件压缩成几个档案


13

运行Linux。我的目录大约有150个大型CSV文件;简单地zip -9对它们进行处理会导致整体文件仍然太大。我希望将它们简单地压缩为四个或五个每个30-40 CSV的zip文件。这样,排序或跨拉链的顺序就不会有问题,因为每个拉链都是独立的。必须有一种简单的方法来执行此操作。有什么建议么?

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

Answers:


23

-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”将所有内容解压缩在一起。


这是什么版本的zip?我得到了file.z01 file.z02 ... file.zip 并且unzip file.zip不能直接工作(我会先使用zip -F重新组合它们)。请注意,这些不是“独立的”请求。
sourcejedi 2013年

1
@sourcejedi:此答案(superuser.com/a/602736/195224)中有一些更详细的说明。
mpy

@mpy我知道,我刚刚写了这个答案:)。
sourcejedi 2013年

@sourcejedi:哦,是的,现在您说出来...;)
mpy

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]

为什么使用split -C--line-bytes)而不使用split -l--lines)?关于一个存档中有多少个CSV文件,这将是更可预测的。
mpy

我快速浏览了联机帮助页。谢谢,我会解决的!
sourcejedi 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.