Já existe uma boa ferramenta para isso: split
> man 1 split NAME split -- split a file into pieces SYNOPSIS split [-l line_count] [-a suffix_length] [file [prefix]] split -b byte_count[K|k|M|m|G|g] [-a suffix_length] [file [prefix]] split -p pattern [-a suffix_length] [file [prefix]]
split --bytes 50M test.out test.out_
dividiria o arquivo test.out
em test.out_xaa, test.out_xab, test.out_xac, ...
Uma solução muito mais feia seria usar dd
dd if=test.out of=test.out.part1 bs=1M count=50 skip=0
cria um arquivo chamado test.out.part1 com os primeiros 50M de test.out. Você pode aumentar o valor para pular para 1 para obter o segundo trecho, para 2 para o terceiro etc etc. Apenas certifique-se também de alterar os nomes dos arquivos ou você acabará sobrescrevendo o mesmo arquivo de saída.