Comment créer plusieurs zips à partir d'un directory contenant un million de files xml?

J'ai un directory contenant des millions de files XML. Je veux créer plusieurs files zip contenant n nombre de files xml. Par exemple, si n = 10000, je veux créer 100 files zip, c'est-à-dire que chaque file zip n'aura que 10000 files xml.

Quel est le moyen le plus efficace de créer ces files zip? Je ne veux pas que ce process prenne plus de time car je dois répéter cette opération pour plusieurs dossiers ayant des millions de files xml.

Cela peut être utile:

$ zip all.zip *.xml ## create a big archive. 

Trouver la taille totale de l'archive:

 $ ls -lh all.zip 

Maintenant, divisez la grande archive en petites archives, selon vos besoins:

 $ split -b 5M all.zip ## creates 5 MB zips 

Note: l'extraction des archives ne fonctionne pas, sauf si vous les rejoignez:

 cat x* > oldbigzip. 

Je le ferais comme ça:

 # 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