SPLIT y CAT: Dividir y Juntar Archivos Grandes Desde La Terminal

Mientras que algunos programas para comprimir nos ofrecen la opción de dividir el archivo resultante en partes, ésto puede hacerse fácilmente en Linux con dos comandos: split y cat.

Temas

Dividiendo Un Archivo Grance Con SPLIT

split nos permite dividir un archivo de dos maneras diferentes: por el tamaño en bytes de cada parte, o por líneas, en cuyo caso especificamos el máximo tamaño del archivo y split automáticamente lo llena con tantas líneas del archivo original como queman en ese tamaño, sin dejar líneas incompletas.

Para dividir un archivo por el número de bytes que necesitamos, split solo necesita el tamaño de las partes que queremos crear, y el archivo que queremos dividir, por ejemplo:

split -b 1024 archivo_a_dividir.bin

Si este archivo tiene un tamaño de 6 kibibytes, creará 6 archivos de un kibibyte cada uno, nombrados xaaxab, xac, xad, xae y xaf.

El parámetro -b es lo que define el tamaño de las partes resultantes. Puedes usar sufijos, ya sea los sufijos de SI KB (Kilobyte: 1000 bytes), MB (Megabyte: 1000×1000), GB (Gigabyte: 1000×1000×1000), TB, PB, EB, ZB, YB. O puedes utilizar los sufijos de IEC K (Kibibyte: 1024 bytes), M (Mibibyte: 1024×1024), G (Gibibyte: 1024×1024×1024), T, P, E, Z, Y. Por ejemplo:

split -b 1K archivo_a_dividir.bin
split -b 10M
archivo_a_dividir.bin
split -b 1KB archivo_a_dividir.bin
split -b
10MB archivo_a_dividir.bin

Los ejemplos pasados crearían partes de 1,024 bytes, 10,485,760 bytes, 1,000 bytes y 10,000,000 bytes respectivamente.

Si no queremos el prefijo por default x, podemos cambiarlo agregando el nuevo prefijo después del nombre del archivo que queremos dividir, por ejemplo:

split -b 1024 archivo_a_dividir.bin parte_

Si estamos dividiendo un archivo de 6 kibibytes como en el primer ejemplo, esto generaría los archivos: parte_aa, parte_abparte_ac, parte_ad, parte_ae y parte_af.

Podemos cambiar la longitud del sufijo en los archivos resultantes, y podemos elegir entre un sufijo basado en el alfabeto (el default) o un sufijo numérico. Cuantas partes podemos crear depende de estas dos características del sufijo. Si conservamos la longitud predeterminada de 2, y no utilizamos un sufijo numérico, podemos dividir el archivo en hasta 676 partes. Si split se queda sin sufijos para usar, fallará, dejándonos con los archivos creados hasta el momento en que falló.

Para cambiar la longitud de el sufijo utiliza el parámetro -a seguido de un número. Por ejemplo:

split -b 1024 -a 4 archivo_a_dividir.bin

Siguiendo el primer ejemplo dado de nuevo, terminaríamos con los archivos: xaaaa, xaaab, xaaac, xaaadxaaae y xaaaf.

Para usar un sufijo numérico usa el parámetro -d, por supuesto que con un sufijo numérico y una longitud de 2 podemos dividir un archivo en a lo mucho 100 partes. Por ejemplo:

split -b 1024 -d archivo_a_dividir.bin

Y usando el primer ejemplo una última vez, terminaríamos con los archivos: x00, x01, x02, x03x04 y x05.

Juntando Las Partes Que Fueron Creadas Con CAT

Debido a que los archivos creados con el comando split son secuenciales, podemos simplemente usar cat para juntarlos en un nuevo archivo, por ejemplo:

cat x?? > archivo_reconstruido.bin

El signo de interrogación actúa como caracter comodín. Cuantos signos de interrogación usamos por supuesto depende de la longitud de los sufijos usada al crear las partes.

Dividiendo Archivos Por Lineas

split también nos permite dividir un archivo de texto por lineas en vez de por el tamaño de las partes resultantes. Estoy seguro que esto fue muy útil en algún punto en el pasado, pero no puedo pensar en una razón para dividir un archivo de texto por lineas fuera de propósitos experimentales o didácticos, los procesadores de texto son bastante capaces de manejar grandes archivos de texto (que bien, apenas unos días despues de escribir esto encontré una buena aplicación,dividir largas listas de URLs y dividir esos largos archivos de MySQL llenos de comandos para poder subirlo a aquellos sistemas web que no pueden manejar archivos grandes, dejé este comentario por propósitos humorísticos). De cualquier manera, el parámetro para dividir un archivo de texto por lineas es -l seguido del número de lineas. Por ejemplo:

split -l 20 archivo_a_dividir.txt

Esto creará un archivo por cada grupo de 20 lineas en el archivo original, así que si el archivo tiene 54 lineas, crearía los archivos xaa (lineas 1-20), xab (lineas 21-40) y xac (lineas 41-54).

Existe otra opción en split, una mezcla entre dividir el archivo por tamaño en bytes y por número de lineas. En este modo especificamos el tamaño máximo en bytes para las partes, y split meterá tantas lineas completas como sea posible en cada parte sin excederse de el tamaño especificado en bytes. Para eso utilizamos el operador -C seguido de un número que representa el tamaño en bytes, puedes utilizar cualquiera de los sufijos que son válidos para la opción -b. Por ejemplo: asume que tenemos un archivo que contiene 20 lineas de 100 letras cada una, teniendo en total 2000 bytes, y utilizamos el siguiente comando:

split -C 512 archivo_a_dividir.txt

Esto nos daría los archivos: xaa (lineas 1-5, debido a que la sexta linea, teniendo 100 letras, no ajustaría entro de los 512 bytes que configuramos como límite), xab (lineas 6-10), xac (lineas 16-20) y xad (lineas 16-20). Cada archivo tendría un tamaño de 500 bytes.

Leave a Reply