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.