Hay un comando estándar para dividir archivos: dividir.
Por ejemplo, si quiero dividir un archivo de palabras en varios fragmentos de 10000 líneas, puedo usar:
split -dl 10000 words wrd
y generaría varios archivos de la forma wrd.01, wrd.02, etc.
Pero quiero tener una extensión específica para esos archivos; por ejemplo, quiero obtener archivos wtd.01.txt, wrd.02.txt.
¿Hay una manera de hacerlo?

Esto no estaba disponible en ese momento, pero con versiones más recientes (
≥ 8.16) degnu splituno puede usar el--additional-suffixinterruptor para tener control sobre la extensión resultante. Deman split:así que al usar esa opción:
las piezas resultantes terminarán automáticamente en
.txt:fuente
gnu splitparte degnu coreutils. También está disponible en OSX si realiza la instalación acoreutilstravés de,homebrewpero tenga en cuenta que, de manera predeterminada, en OSX, lasgnuutilidades tienengantepuesto a su nombre (por ejemplo, engstatlugar destat), por lo que puede invocarlogsplit(o modificar la RUTA según la guía aquí si lo desea) para usarlosplitsobre el OSXsplit). HTHgsplitpara que los sufijos numéricos (-d) funcionen.Dichas tareas se gestionan mejor con el shell. Use dividir y luego escriba un bucle simple para cambiar el nombre de los archivos. P.ej
cambiaría el nombre de sus archivos wrd.01, wrd.02, etc. para que todos tengan una extensión .txt.
fuente
split+mvcombo es más de 6 veces más rápido queawk(aproximadamente 3s frente a 18s ) para un archivo de entrada de 10 millones de líneas (75 MB) ... el texto en cada línea era su propio número de línea ... Gracias por repetirlo el "obvio" :)split + mves 75 veces más rápido queawk: cuando hay 100 veces más archivos,split + mves 1,5 veces más rápido queawk. Entonces, para mí, estesplit + mvmétodo gana, sin duda. Es como consice (posiblemente más), y es más rápido queawk.for file in wrd.*; do mv "$file" "$file.txt"; done:)