O comando split

Publicado por Fábio Berbert de Paula em 07/11/2002

[ Hits: 81.845 ]

Blog: https://fabio.automatizando.dev

 


O comando split



O comando split é usado para dividir determinado arquivo em pedaços menores, muito útil quando se tem dois disquetes e um arquivo de 2Mb, por exemplo. Divide-se o treco em dois pedaços de 1Mb e manda pro baú.

Um exemplo real aconteceu comigo nesse mês, tinha um script em Perl para pegar informações do arquivo de log do sendmail, no início esse arquivo tinha 90Mb, porém seu tamanho foi crescendo e crescendo até que passou da casa dos 250Mb. Resumindo, tornara-se impossível tratar um arquivo de 250Mb com um script interpretado. A solução encontrada foi split nele.

Você tem duas opções ao dividir um arquivo: por número de linhas ou número de bytes. Para dividir por número de linhas, use a seguinte sintaxe:

split --lines=1000 arquivo.txt

Isso irá gerar N arquivos com 1000 linhas cada. Se optar pela quantidade de bytes, use:

split --bytes=1073741824 backup.tar.gz

Que irá gerar N arquivos com 1 Mb cada.

Bom, todos sabemos que 1Kb corresponde a 1024 bytes, 1Mb a 1024Kb,1Gb a 1024Mb e assim por diante. Pois é, se você quer calcular quantos bytes correspondem a 5Mb, podemos usar a calculadora em modo texto chamada bc, vejam:

bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1024*1024*5
5242880
quit


Ah, já ia me esquecendo. Ainda podemos escolher o prefixo dos arquivos gerados, que por padrão saem xaa, xab, xba, .... Se quiser que seus pedacinhos sejam nomeados como pedacinhoa, pedacinhob, ..., use:

split --lines=500 arquivo.txt pedacinho

Atenciosamente, Fábio Berbert de Paula

Outras dicas deste autor

Ações condicionais no SED

inkscape - software de desenho vetorial (estilo CorelDraw)

netrw - o explorador de arquivos nativo do Vim

Como criar um pendrive bootável de qualquer Linux

Como usar o xmodmap para mapear teclas

Leitura recomendada

Configurando interface de rede eth0

Conversão de arquivos EBCDIC para ASCII

Descobrindo que processo está consumindo mais memória

Verificando processos com o PS

Curiosidade sobre o comando "cal" e setembro de 1752

  

Comentários
[1] Comentário enviado por JuNiOx em 06/09/2004 - 00:49h

Interessante esse programa, estava procurando algo similar
:-)

[2] Comentário enviado por destilado em 22/12/2004 - 00:04h

Outra opcao interessante eh o comando tail, por ele pega por padrao as ultimas 10 linhas do arquivo. mas vc pode usar para arquivos binarios, pegar o ultimos n bytes, ou entao as ultimas n linhas, dentre outras opcao. Eu uso bastante quando eu tenho, como no seu exemplo, um log muito grande e quero soh o final. por exemplo:
tail -n 1000 log.txt > final-log.txt
vai direcionar a saida para final-log.txt, que serao as ultimas 1000 linhas do arquivo, ou entao o arquivo inteiro se esse tiver menos de 1000 linhas.
o comando head faz a mesma coisa, soh que com o comeco do arquivo.
mais informacoes: man tail, man split, man head, etc...

[3] Comentário enviado por luiscarlos em 05/06/2005 - 17:04h

pode-se usar o split para dividir arquivos, supondo o arquivo de 2Mb do artigo, vc faz
split -b 1024k arquivo parte

isso irá criar dois arquivos
partea parteb
com 1024 KB cada, depois pra voltar é so fazer
cat parte parteb > arquivo
e vc terá seu arquivo original

[4] Comentário enviado por airozi em 04/03/2006 - 21:45h

Muito fera esse comando, muito fera!!
quebra mo galho pra mandar arquivos em grande pro disket.
Só não manjei no BC

[5] Comentário enviado por jllitvay em 26/06/2006 - 15:46h

Legal, mas como junta de novo???

[6] Comentário enviado por KYRM& em 05/07/2006 - 22:01h

cat pedacinhoa pedacinhob pedacinhoc > pedacinho

[7] Comentário enviado por removido em 11/11/2006 - 11:53h

Pessoal, esse modo de juntar o arquivo novamente com o comando cat serve soh para arquivos texto? ou para arquivos binarios tambem? Fiquei na duvida.

[8] Comentário enviado por igormol em 24/06/2007 - 11:53h

Parece ter um erro.
split --bytes=1073741824 backup.tar.gz não gerá N arquivos com 1MB, o certo seria:

split --bytes=1048576 backup.tar.gz

[9] Comentário enviado por dcampos em 26/06/2007 - 21:37h

fgsmail, esse modo de juntar com o cat serve para arquivos binários também.

Abraço.

[10] Comentário enviado por emersonat em 03/07/2009 - 13:24h

tentei usar o comando split da seguinte forma:
split -b 8 000 000 nomedoarquivo enter

o resultado foi apenas a criaçao de um arquivo so, mas o que eu desejava era criar varios arquivos, onde errrei?

favor responder para o email: emersonquimica@seed.pr.gov.br

[11] Comentário enviado por Douglas Lima Lim em 24/12/2009 - 00:38h

E pra juntar os arquivos, come que faz?

[12] Comentário enviado por eowyn_k_tonks em 07/04/2010 - 13:49h

muito bom, vlw aí

[13] Comentário enviado por dcampos em 07/04/2010 - 14:18h

Douglas Lima, para juntar os arquivos use o cat:

cat xaa xab xac > backup.tar.gz

[14] Comentário enviado por camilaalvesk em 12/11/2010 - 15:29h

tem um jeito mais fácil de juntar os arquivos....

cat pedaço* > nomearquivo

ae vc não precisa de ficar digitando pedaçoaa pedaçoab pedaçoac ....
com o * ele pega tudo que tiver a palavra pedaço ....

[15] Comentário enviado por RamzaGyn em 07/02/2019 - 18:30h

Tem como repetir a primeira linha do arquivo principal mas seus pedaços gerados?

O porquê o arquivo gigante tem um cabeçalho....



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts