¿Cómo dividir un archivo y comprimirlo directamente?


12

Tengo un archivo de 100 GB y quiero dividirlo en 100 archivos de 1 GB cada uno (por salto de línea)

p.ej

split --bytes=1024M /path/to/input /path/to/output

Para los 100 archivos generados, quiero aplicar gzip / zip a cada uno de estos archivos.

¿Es posible usar un solo comando?


2
Para hasta 1 GB por archivo (menos si la siguiente línea lo supera) use --line-bytes=1024M.
Brian

Respuestas:


30

Utilice "--filtro":

split --bytes=1024M --filter='gzip > $FILE.gz' /path/to/input /path/to/output


esto no funciona para mí, sigue sobrescribiendo el mismo archivo ya que $ FILE no está definido y ni siquiera escribe en la carpeta des.
splaisan

mi error, necesita comillas simples para reemplazar $ FILE, mi gran error, disculpas y gracias por la ayuda: este comando final me funcionó para guardar datos fastq que vienen en bloques de 4 líneas: 'zcat ERR3152365.fastq.gz | split -a 3 -d -l 1200000 - sufijos numéricos --filter = 'pigz -p 8> $ FILE.fq.gz' - splitout / part_ '
splaisan

0

Una línea con un condicional es lo más cerca que puede acercarse.

cd /path/to/output && split --bytes=1024M /path/to/input/filename && gzip x*

gzipsolo se ejecutará si splites exitoso debido al condicional &&que también está entre cdy splitasegurándose de que también cdsea ​​exitoso. Tenga en cuenta eso splity gzipenvíe al directorio actual en lugar de tener la capacidad de especificar el directorio de salida. Puede hacer el directorio, si es necesario:

mkdir -p /path/to/output && cd /path/to/output && split --bytes=1024M /path/to/input/filename && gzip x*

Para volver a armar todo:

gunzip /path/to/files/x* && cat /path/to/files/x* > /path/to/dest/filename

0

El uso de este comando con -dopción le permite generar sufijos numéricos.

split -d -b 2048m "myDump.dmp" "myDump.dmp.part-" && gzip myDump.dmp.part*

Archivos generados:

    myDump.dmp.part-00
    myDump.dmp.part-01
    myDump.dmp.part-02
    ...
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.