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