GNU/Linux >> Tutoriales Linux >  >> Linux

9 ejemplos útiles del comando Split en Linux

Para ayudarlo a aprender sobre el comando dividir, estoy usando un archivo de texto relativamente grande que contiene 17170 líneas y 1.4 MB de tamaño. Puede descargar una copia de este archivo desde el enlace de GitHub.

Tenga en cuenta que no mostraré directamente la salida en estos ejemplos debido al gran tamaño de los archivos. Usaré los comandos ll y wc para resaltar los cambios de archivo.

Le aconsejo que eche un vistazo rápido al comando wc para comprender el resultado de los ejemplos del comando split.

Ejemplos del comando Split en Linux

Esta es la sintaxis del comando Dividir:

split [options] filename [prefix]

Veamos cómo usarlo para dividir archivos en Linux.

1. Dividir archivos en varios archivos

De forma predeterminada, el comando dividir crea nuevos archivos por cada 1000 líneas. Si no se especifica ningún prefijo, utilizará 'x'. Las letras que siguen enumeran los archivos, por lo que xaa va primero, luego xab, y así sucesivamente.

Dividamos el archivo de registro de muestra:

split someLogFile.log

Si usa el comando ls, puede ver varios archivos nuevos en su directorio.

[email protected]:~/Documents$ ls
someLogFile.log  xab  xad  xaf  xah  xaj  xal  xan  xap  xar
xaa              xac  xae  xag  xai  xak  xam  xao  xaq

Puede usar wc para comprobar rápidamente el número de líneas después de la división.

[email protected]:~/Documents$ wc -l xaa xaq xar
1000 xaa
1000 xaq
170 xar

Recuerde que anteriormente vimos que nuestro archivo inicial tenía 17.170 líneas. Entonces podemos ver que nuestro programa ha funcionado como se esperaba al crear 18 archivos nuevos. 17 de ellos tienen 1000 líneas cada uno y el último tiene las 170 líneas restantes.

Otra forma en que podemos demostrar lo que está sucediendo es ejecutar el comando con la opción detallada. Si no estás familiarizado con verbose, ¡te lo estás perdiendo! Proporciona información más detallada sobre lo que está haciendo su sistema y está disponible para usar con muchos comandos.

split someLogFile.log --verbose

Puede ver lo que sucede con su comando en la pantalla:

creating file 'xaa'
creating file 'xab'
creating file 'xac'
creating file 'xad'
creating file 'xae'
creating file 'xaf'
creating file 'xag'
creating file 'xah'
creating file 'xai'
creating file 'xaj'
creating file 'xak'
creating file 'xal'
creating file 'xam'
creating file 'xan'
creating file 'xao'
creating file 'xap'
creating file 'xaq'
creating file 'xar'

2. Dividir archivos en varios archivos con números de línea específicos

Entiendo que puede que no le guste que los archivos se dividan en archivos de 1000 líneas. Puedes cambiar este comportamiento con -l opción.

Cuando se agrega esto, ahora puede especificar cuántas líneas desea en cada uno de los nuevos archivos.

split someLogFile.log -l 500

Como puede adivinar, ahora los archivos divididos tienen 500 líneas cada uno, excepto el último.

[email protected]:~/Documents$ wc -l xbh xbi
500 xbh
170 xbi

Ahora tienes muchos más archivos, pero con la mitad de líneas en cada uno.

3. Dividir los archivos en n número de archivos

El -n La opción facilita la división en un número designado de piezas o trozos. Puede asignar cuántos archivos desea agregando un valor entero después de -n.

split someLogFile.log -n 15

Ahora puede ver que hay 15 archivos nuevos.

[email protected]:~/Documents$ ls
someLogFile.log  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam  xan  xao

4. Dividir archivos con prefijo de nombre personalizado

¿Qué sucede si desea usar la división pero mantener el nombre original de mi archivo o crear un nuevo nombre en lugar de usar 'x'?

Es posible que recuerde haber visto el prefijo como parte de la sintaxis descrita al principio del artículo. Puede escribir su propio nombre de archivo personalizado después del archivo de origen.

split someLogFile.log someSeparatedLogFiles.log_

Aquí están los archivos divididos con nombres que comienzan con el prefijo dado.

[email protected]:~/Documents$ ls
someLogFile.log               someSeparatedLogFiles.log_aj
someSeparatedLogFiles.log_aa  someSeparatedLogFiles.log_ak
someSeparatedLogFiles.log_ab  someSeparatedLogFiles.log_al
someSeparatedLogFiles.log_ac  someSeparatedLogFiles.log_am
someSeparatedLogFiles.log_ad  someSeparatedLogFiles.log_an
someSeparatedLogFiles.log_ae  someSeparatedLogFiles.log_ao
someSeparatedLogFiles.log_af  someSeparatedLogFiles.log_ap
someSeparatedLogFiles.log_ag  someSeparatedLogFiles.log_aq
someSeparatedLogFiles.log_ah  someSeparatedLogFiles.log_ar
someSeparatedLogFiles.log_ai

5. Dividir y especificar la longitud del sufijo

Split presenta una longitud de sufijo predeterminada de 2 [aa, ab, etc.]. Esto cambiará automáticamente a medida que aumente la cantidad de archivos, pero si desea cambiarlo manualmente, también es posible. Entonces, digamos que desea que nuestros archivos se llamen algo así como someSeparatedLogFiles.log_aaaab.

¿Cómo puedes hacer esto? La opción -a nos permite especificar la longitud del sufijo.

split someLogFile.log someSeparatedLogFiles.log_ -a 5

Y aquí están los archivos divididos:

[email protected]:~/Documents$ ls
someLogFile.log                  someSeparatedLogFiles.log_aaaae  someSeparatedLogFiles.log_aaaaj  someSeparatedLogFiles.log_aaaao
someSeparatedLogFiles.log_aaaaa  someSeparatedLogFiles.log_aaaaf  someSeparatedLogFiles.log_aaaak  someSeparatedLogFiles.log_aaaap
someSeparatedLogFiles.log_aaaab  someSeparatedLogFiles.log_aaaag  someSeparatedLogFiles.log_aaaal  someSeparatedLogFiles.log_aaaaq
someSeparatedLogFiles.log_aaaac  someSeparatedLogFiles.log_aaaah  someSeparatedLogFiles.log_aaaam  someSeparatedLogFiles.log_aaaar
someSeparatedLogFiles.log_aaaad  someSeparatedLogFiles.log_aaaai  someSeparatedLogFiles.log_aaaan

6. Dividir con sufijo de orden numérico

Hasta este punto, ha visto sus archivos separados usando diferentes combinaciones de letras. Personalmente, me resulta mucho más fácil distinguir archivos mediante números.

Mantengamos la longitud del sufijo del ejemplo anterior, pero cambiemos la organización alfabética a numérica con la opción -d .

split someLogFile.log someSeparatedLogFiles.log_ -a 5 -d

Así que ahora tendrá archivos divididos con suficiencias numéricas.

[email protected]:~/Documents$ ls
someLogFile.log                  someSeparatedLogFiles.log_00004  someSeparatedLogFiles.log_00009  someSeparatedLogFiles.log_00014
someSeparatedLogFiles.log_00000  someSeparatedLogFiles.log_00005  someSeparatedLogFiles.log_00010  someSeparatedLogFiles.log_00015
someSeparatedLogFiles.log_00001  someSeparatedLogFiles.log_00006  someSeparatedLogFiles.log_00011  someSeparatedLogFiles.log_00016
someSeparatedLogFiles.log_00002  someSeparatedLogFiles.log_00007  someSeparatedLogFiles.log_00012  someSeparatedLogFiles.log_00017
someSeparatedLogFiles.log_00003  someSeparatedLogFiles.log_00008  someSeparatedLogFiles.log_00013

7. Agregue sufijos hexadecimales para dividir archivos

Otra opción para la creación de sufijos es usar el sufijo hexadecimal integrado que alterna letras y números ordenados.

Para este ejemplo, combinaré algunas cosas que ya te he mostrado. Dividiré el archivo usando mi propio prefijo. Elegí un guión bajo para facilitar la lectura.

Usé el -x opción para crear un sufijo hexadecimal. Luego dividí nuestro archivo en 50 fragmentos y le di al sufijo una longitud de 6.

split someLogFile.log _ -x -n50 -a6

Y aquí está el resultado del comando anterior:

[email protected]:~/Documents$ ls
_000000  _000003  _000006  _000009  _00000c  _00000f  _000012  _000015  _000018  _00001b  _00001e  _000021  _000024  _000027  _00002a  _00002d  _000030
_000001  _000004  _000007  _00000a  _00000d  _000010  _000013  _000016  _000019  _00001c  _00001f  _000022  _000025  _000028  _00002b  _00002e  _000031
_000002  _000005  _000008  _00000b  _00000e  _000011  _000014  _000017  _00001a  _00001d  _000020  _000023  _000026  _000029  _00002c  _00002f  someLogFile.log

8. Dividir archivos en múltiples archivos de tamaño específico

También es posible usar el tamaño del archivo para dividir archivos en división. Tal vez necesite enviar un archivo grande a través de una red con límite de tamaño de la manera más eficiente posible. Puede especificar el tamaño exacto para sus requisitos.

La sintaxis puede volverse un poco complicada a medida que continuamos agregando opciones. Entonces, explicaré cómo -b el comando funciona antes de mostrar el ejemplo.

Cuando desee crear archivos de un tamaño específico, use -b opción. A continuación, puede escribir n K[B], n M[B], n G[B] donde n es el valor del tamaño de su archivo y K [1024] es -kibi, M es -mebi, G es -gibi, y así sucesivamente. KB [1000] es kilo, MB – mega, etc.

Puede parecer que están sucediendo muchas cosas, pero no es tan complejo cuando lo desglosas. Ha especificado el archivo de origen, nuestro prefijo de nombre de archivo de destino, un sufijo numérico y una separación por tamaño de archivo de 128 KB.

split someLogFile.log someSeparatedLogFiles.log_ -d -b 128KB

Aquí están los archivos divididos:

[email protected]:~/Documents$ ls
someLogFile.log               someSeparatedLogFiles.log_02  someSeparatedLogFiles.log_05  someSeparatedLogFiles.log_08
someSeparatedLogFiles.log_00  someSeparatedLogFiles.log_03  someSeparatedLogFiles.log_06  someSeparatedLogFiles.log_09
someSeparatedLogFiles.log_01  someSeparatedLogFiles.log_04  someSeparatedLogFiles.log_07  someSeparatedLogFiles.log_10

Puede verificar el resultado con el comando 'wc'.

[email protected]:~/Documents$ wc someSeparatedLogFiles.log_0*
1605    4959  128000 someSeparatedLogFiles.log_00
1605    4969  128000 someSeparatedLogFiles.log_01
1605    4953  128000 someSeparatedLogFiles.log_02
1605    4976  128000 someSeparatedLogFiles.log_03
1605    4955  128000 someSeparatedLogFiles.log_04
1605    4975  128000 someSeparatedLogFiles.log_05
1605    4966  128000 someSeparatedLogFiles.log_06
1605    4964  128000 someSeparatedLogFiles.log_07
1605    4968  128000 someSeparatedLogFiles.log_08
1605    4959  128000 someSeparatedLogFiles.log_09
16050   49644 1280000 total

9. Dividir archivos en varios archivos de tamaño "como máximo" n con

Si desea dividir archivos en aproximadamente el mismo tamaño, pero conservando la estructura de líneas, esta podría ser la mejor opción para usted. Con -C , puede especificar un tamaño máximo. Luego, el programa dividirá automáticamente los archivos en función de las líneas completas.

split someLogFile.log someNewLogFiles.log_ -d -C 1MB

Puede ver en la salida que el primer archivo dividido tiene un tamaño de casi 1 MB, mientras que el resto del archivo está en el segundo archivo.

[email protected]:~/Documents$ ll
total 2772
drwxr-xr-x  2 chris chris   81920 Jul 24 22:01 ./
drwxr-xr-x 19 chris chris    4096 Jul 23 22:23 ../
-rw-r--r--  1 chris chris 1369273 Jul 20 17:52 someLogFile.log
-rw-r--r--  1 chris chris  999997 Jul 24 22:01 someNewLogFiles.log_00
-rw-r--r--  1 chris chris  369276 Jul 24 22:01 someNewLogFiles.log_01

Consejo adicional:volver a unir archivos divididos

Este no es un comando dividido, pero podría ser útil para los nuevos usuarios.

[email protected]:~/Documents$ ls
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam  xan  xao  xap  xaq  xar

Puede usar otro comando para volver a unir esos archivos y crear una réplica de nuestro documento completo. El comando cat es la abreviatura de concatenar, que es solo una palabra elegante que significa "unir elementos". Dado que todos los archivos comienzan con la letra 'x', el asterisco aplicará el comando a cualquier archivo que comience con esa letra.

[email protected]:~/Documents$ cat x* > recoveredLogFile.log
[email protected]:~/Documents$ ls
recoveredLogFile.log  xab  xad  xaf  xah  xaj  xal  xan  xap  xar
xaa                   xac  xae  xag  xai  xak  xam  xao  xaq

Como puede ver, nuestro archivo recreado tiene el mismo tamaño que el original.

wc -l recreatedLogFile.log
17170 recreatedLogFile.log

Nuestro formato (incluido el número de líneas) se conserva en el archivo creado.

Si eres nuevo en Linux, espero que este tutorial te haya ayudado a comprender el comando dividir. Si tienes más experiencia, ¡cuéntanos tu forma favorita de usar la división en los comentarios a continuación!

Principiante o experimentado, le sugiero que también mire el comando csplit, que es una forma ligeramente mejor de dividir archivos en la línea de comandos de Linux.


Linux
  1. 12 ejemplos útiles de comandos Wget en Linux

  2. Comando ls en Linux:17 ejemplos útiles explicados

  3. Ejemplos esenciales del comando de archivo en Linux

  4. Cómo usar el comando id en Linux:5 ejemplos útiles

  5. Ejemplos de comandos ln en Linux

Comando táctil en Linux (5 ejemplos)

Comando WC de Linux con ejemplos

9 ejemplos útiles de Touch Command en Linux

10 ejemplos útiles del comando Sort en Linux

Ejemplos esenciales del comando ps en Linux

15 ejemplos súper útiles del comando Buscar en Linux