我有一个包含数百万个 xml 文件的目录。我想创建多个包含 n 个 xml 文件的 zip 文件。例如:如果 n = 10000,那么我想创建 100 个 zip 文件,即每个 zip 文件将只有 10000 个 xml 文件。
创建这些 zip 文件最有效的方法是什么?我不希望此过程花费更多时间,因为我必须对包含数百万个 xml 文件的多个文件夹重复此操作。
答案1
这可能有用:
$ zip all.zip *.xml ## create a big archive.
查找存档的总大小:
$ ls -lh all.zip
现在,根据需要将大档案拆分为小档案:
$ split -b 5M all.zip ## creates 5 MB zips
注意:解压档案不起作用,除非您将它们重新加入:
cat x* > oldbigzip.
答案2
我会这样做:
# Create file list
find . -type f -name '*.xml' > filelist
n=10000
fileno=1
# Loop through list, extracting n names each time
for i in $(seq 1 $n $(wc -l < filelist)); do
zipfile="zipfile$(printf "%04d" $((fileno++)))"
sed -n "$i,$((i+n-1))p" filelist | zip $zipfile -@
done