如何从包含一百万个 xml 文件的目录创建多个 zip?

如何从包含一百万个 xml 文件的目录创建多个 zip?

我有一个包含数百万个 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

相关内容