我有一个包含数千个文件的目录。这些文件各约为十到一百Kb。现在我正在寻找一种方法将这些文件压缩成ZIP档案。但是有一些限制。
大多数文件已经采用某种压缩格式(例如图像)。因此可以假设zip文件的大小与其提取内容的总和大小相同。
我正在考虑使用Bash / ZSH循环文件,同时保留文件名数组和文件大小之和。一旦超过最大文件总大小,我想压缩文件名数组中的文件并继续使用新数组和文件大小计数器。
答案 0 :(得分:0)
您可以将文件添加到存档,并在每次迭代时测试其大小。然后,如果大小超出限制,请从存档中删除最后一个文件并创建一个新文件。
#!/bin/bash
count=1
for file in *;
do
zip "archive$count.zip" "$file"
archivesize=$(wc -c < "$file")
if (( archivesize>2*1024*1024 )); then
zip -d "archive$count.zip" "$file"
((count++))
zip "archive$count.zip" "$file"
fi
done