Divida um arquivo grande em pedaços menores


Respostas:


79

Você pode usar split e cat .

Por exemplo, algo como

$ split --bytes 500M --numeric-suffixes --suffix-length=3 foo foo.

(onde está o nome do arquivo de entrada fooe 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 desejar dividir nos limites da linha em vez do número exato de bytes.

Para remontar as peças geradas novamente, você pode usar, por exemplo:

$ cat foo.* > foo_2

(supondo que o shell classifique os resultados de globbing do shell - e o número de partes não exceda o limite de argumentos dependente do sistema)

Você pode comparar o resultado via:

$ cmp foo foo_2
$ echo $?

(que deve gerar 0)

Como alternativa, você pode usar uma combinação de find / sort / xargs para remontar as peças:

$ find -maxdepth 1 -type f -name 'foo.*'  | sort | xargs cat > foo_3

2
Tente este comando:man split cat md5sum
Kevin M

6
Ao montar, recomendo cat foo.{000..NNN}onde NNNestá a última peça esperada. Dessa forma, você recebe uma mensagem de erro se uma das peças estiver faltando. Mas observe que -dobter sufixos numéricos é específico da divisão do GNU; em outras plataformas você tem que se contentar com foo.aaa, foo.aabetc.
Gilles 'SO- stop be evil'

11
E tenha em mente que, para split, KB = 1000, K = 1024, MB = 1000 * 1000, M = 1024 * 1024 etc.
Zorawar

11
Isso não deveria ... cat > foo_3ser ... cat >>foo_3?
alk

11
Se você decidir aliviar a dor usando um utilitário. rare 7zipsão frequentemente usados ​​para facilitar a montagem dessas divisões na plataforma cruzada
infixado em

4

Você também pode fazer isso com o Archive Manager, se preferir uma GUI. Procure em 'Salvar-> Outras opções-> Dividir em volumes de'.


5
i marcado é de linha de comando ", mas obrigado pela resposta :)
Stefan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.