J'ai un fichier de 100 Go et je souhaite le diviser en 100 fichiers de 1 Go chacun (par saut de ligne)
par exemple
split --bytes=1024M /path/to/input /path/to/output
Pour les 100 fichiers générés, je souhaite appliquer gzip / zip à chacun de ces fichiers.
Est-il possible d'utiliser une seule commande?
--line-bytes=1024M
.Réponses:
Utilisez "--filter":
split --bytes=1024M --filter='gzip > $FILE.gz' /path/to/input /path/to/output
la source
Un one-liner utilisant un conditionnel est aussi proche que possible.
gzip
ne fonctionnera que sisplit
est couronnée de succès en raison de la condition&&
qui est aussi entrecd
etsplit
en veillant à l'cd
est couronnée de succès, trop .. Notez quesplit
et lagzip
sortie dans le répertoire courant au lieu d'avoir la possibilité de spécifier le répertoire de sortie. Vous pouvez créer le répertoire, si nécessaire:Pour tout remettre ensemble:
la source
L'utilisation de cette commande avec
-d
option vous permet de générer des suffixes numériques.Fichiers générés:
la source
Une fonction bash pour compresser à la volée avec pigz
la source