Ich habe eine 100-GB-Datei und möchte diese in 100 1-GB-Dateien aufteilen (nach Zeilenumbruch).
z.B
split --bytes=1024M /path/to/input /path/to/output
Für die 100 generierten Dateien möchte ich gzip / zip auf jede dieser Dateien anwenden.
Ist es möglich, einen einzelnen Befehl zu verwenden?
--line-bytes=1024M
.Antworten:
Verwenden Sie "--filter":
split --bytes=1024M --filter='gzip > $FILE.gz' /path/to/input /path/to/output
quelle
Ein Einzeiler mit einer Bedingung ist so nah wie möglich.
gzip
wird nur dann ausgeführt , wennsplit
aufgrund der bedingten erfolgreich ist ,&&
die auch zwischen den istcd
undsplit
sicherstellen , dass dascd
erfolgreich ist, auch .. Beachten Sie, dasssplit
undgzip
Ausgang in das aktuelle Verzeichnis stattdessen die Fähigkeit, die das Ausgabeverzeichnis angeben. Sie können das Verzeichnis bei Bedarf erstellen:Um alles wieder zusammenzusetzen:
quelle
Wenn Sie diesen Befehl mit der
-d
Option verwenden, können Sie numerische Sufixe generieren.Dateien generiert:
quelle