Uso del comando split en linux, para dividir archivos de texto.
El comando Split en Linux, se usa para dividir archivos grandes en archivos más pequeños. Es algo normal que tengamos algunos archivos de gran tamaño, incluso algunos que vayan creciendo de forma incremental (normalmente registros).
Estos archivos tan grandes no son fáciles de leer y, aún menos de editar. Para solucionar estos problemas, linux nos ofrece un comando (desconocido por los usuarios noveles), con el cual podemos dividir un archivo en otros más pequeños (con mismo contenido), dependiendo de nuestras necesidades.
En el artículo de hoy, vemos con ejemplos algunas de las funciones más utilizadas del comando tratado en este post.
Comando split en linux
Uso del comando split en linux
Como ya comentamos anteriormente, split nos ayuda a dividir los archivos en otros más pequeños. Podemos realizar la división por números de línea, tamaño, longitud, y más. Es importante tener presente que de forma predeterminada, el comando split divide un archivo en archivos de 1000 líneas; por tanto, si tenemos un archivo con 2100 líneas, obtendremos tres archivos, dos con 1000, y uno con 100 líneas.
Su sintaxis básica es sencilla.
split [archivo]
Por ejemplo…
split script.txt # o split script.sh
Obtenemos tres archivos.
- xaa
- xab
- xac
Para nuestras necesidades, el archivo sigue siendo excesivamente grande. Con la opción «-l», podemos definir el número de líneas de los archivos. Mira que fácil es dividirlo en archivos de 150 líneas.
split -l 150 miscript.sh
Ejemplo…
split -l 150 libera.sh
Observa el resultado final.
Ejemplo del comando split
También podemos aplicar un prefijo en particular.
split [archivo] [nombre de destino]
Vemos un ejemplo aplicando división por líneas.
split -l 10 script.sh miscript.sh
Listamos el resultado con el comando ls.
sergio@sololinux:~/demo$ ls miscript.shaa miscript.shac miscript.shae miscript.shag miscript.shab miscript.shad miscript.shaf script.sh
Otro argumento interesante es «-d». Este nos enumera los archivos agregando un carácter numérico en la extensión del archivo. En nuestro ejemplo, también cambiamos el nombre y limitamos el número de líneas por archivo.
split -d -l 150 script.sh miscript.sh
Ejecutamos «ls», para visualizar el resultado.
sergio@sololinux:~/demo$ ls miscript.sh00 miscript.sh02 miscript.sh04 miscript.sh06 miscript.sh01 miscript.sh03 miscript.sh05 script.sh
Como ultima opción interesante, te propongo dividir los archivos con el comando split por tamaño. Para ello usamos la opción «-b», seguido del tamaño máximo de cada archivo. Vemos un ejemplo en el cual generamos archivos de un mega.
split -b 1M script.sh
En el caso anterior, todos los archivos generados tienen un tamaño máximo de 1Mb.
Si quieres aprender más, puedes visualizar el manual de la herramienta split con el siguiente comando.
man split
Manual del comando split.
SPLIT(1) User Commands SPLIT(1) NAME top split - split a file into pieces SYNOPSIS top split [OPTION]... [FILE [PREFIX]] DESCRIPTION top Output pieces of FILE to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is 'x'. With no FILE, or when FILE is -, read standard input. Mandatory arguments to long options are mandatory for short options too. -a, --suffix-length=N generate suffixes of length N (default 2) --additional-suffix=SUFFIX append an additional SUFFIX to file names -b, --bytes=SIZE put SIZE bytes per output file -C, --line-bytes=SIZE put at most SIZE bytes of records per output file -d use numeric suffixes starting at 0, not alphabetic --numeric-suffixes[=FROM] same as -d, but allow setting the start value -x use hex suffixes starting at 0, not alphabetic --hex-suffixes[=FROM] same as -x, but allow setting the start value -e, --elide-empty-files do not generate empty output files with '-n' --filter=COMMAND write to shell COMMAND; file name is $FILE -l, --lines=NUMBER put NUMBER lines/records per output file -n, --number=CHUNKS generate CHUNKS output files; see explanation below -t, --separator=SEP use SEP instead of newline as the record separator; '\0' (zero) specifies the NUL character -u, --unbuffered immediately copy input to output with '-n r/...' --verbose print a diagnostic just before each output file is opened --help display this help and exit --version output version information and exit The SIZE argument is an integer and optional unit (example: 10K is 10*1024). Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000). Binary prefixes can be used, too: KiB=K, MiB=M, and so on. CHUNKS may be: N split into N files based on size of input K/N output Kth of N to stdout l/N split into N files without splitting lines/records l/K/N output Kth of N to stdout without splitting lines/records r/N like 'l' but use round robin distribution r/K/N likewise but only output Kth of N to stdout
Dividir archivos con el comando split
Canales de Telegram: Canal SoloLinux – Canal SoloWordpress
Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Uso del comando split en linux.
Perdón por la ignorancia, pero ¿Con el mismo comando puedo volver a unir los archivos?
Gracias
Yo soy novicio en LINUX, pero me imagino que será a través del comando «cat»
Como el propio nombre del comando indica (split = division), esta herramienta solo divide, no fusiona. Como bien comenta el amigo Carlos O, cat permite fusionar los archivos (existen otras opciones). Recuerda que cualquier archivo dividido con split, se puede visualizar o editar con un editor de texto simple.
También soy nuevo. Pensaba que el comando cat era unicamente para mostrar en pantalla el contenido de un archivo. Gracias
La principal función de cat es la impresión en pantalla, pero como todo en linux nada es lo que parece. Cat es un comando muy poderoso, revisa este artículo: https://www.sololinux.es/combinar-archivos-de-texto-con-el-comando-cat/
Buenisimo. Gracias
Gracias a ti por visitarnos Cristian.