¿Has mirado el comando dividir?
$ split --help
Usage: split [OPTION] [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT
is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-a, --suffix-length=N use suffixes of length N (default 2)
-b, --bytes=SIZE put SIZE bytes per output file
-C, --line-bytes=SIZE put at most SIZE bytes of lines per output file
-d, --numeric-suffixes use numeric suffixes instead of alphabetic
-l, --lines=NUMBER put NUMBER lines per output file
--verbose print a diagnostic to standard error just
before each output file is opened
--help display this help and exit
--version output version information and exit
Podrías hacer algo como esto:
split -l 200000 filename
que creará archivos cada uno con 200000 líneas llamadas xaa xab xac
...
Otra opción, dividida por el tamaño del archivo de salida (todavía se divide en saltos de línea):
split -C 20m --numeric-suffixes input_filename output_prefix
crea archivos como output_prefix01 output_prefix02 output_prefix03 ...
cada uno de tamaño máximo de 20 megabytes.