Você pode usar divisão e < em> gato .
Por exemplo, algo como
$ split --bytes 500M --numeric-suffixes --suffix-length=3 foo foo.
(onde o nome do arquivo de entrada é foo
e o último argumento é o prefixo de saída). Isso criará arquivos como foo.000 foo.001
...
O mesmo comando com opções curtas:
$ split -b 100k -d -a 3 foo foo
Você também pode especificar "--line-bytes" se quiser dividir os limites da linha em vez de apenas o número exato de bytes.
Para remontar novamente as partes geradas, você pode usar, por exemplo:
$ cat foo.* > foo_2
(assumindo que o shell classifica os resultados da globalização do shell - e o número de partes não excede o limite de argumentos dependentes do sistema)
Você pode comparar o resultado via:
$ cmp foo foo_2
$ echo $?
(que deve produzir 0)
Alternativamente, você pode usar uma combinação de find / sort / xargs para montar as peças:
$ find -maxdepth 1 -type f -name 'foo.*' | sort | xargs cat > foo_3