O comando split

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

[ Hits: 61.342 ]

Blog: https://fabio.city

 


O comando split



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

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

Você tem duas opções ao dividir um arquivo: por número de linhas ounú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 pelaquantidade de bytes, use:

split --bytes=1073741824 backup.tar.gz

Que irá gerar N arquivos com 1 Mb cada.

Bom, todos sabemos que 1 Kb corresponde à 1024 bytes, 1 Mb à 1024 Kb,1 Gb à 1024 Mb e assim por diante. Pois é, se você quer calcular quantosbytes correspondem a 5 Mb, podemos usar a calculadora em modo textochamada 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 arquivosgerados, que por padrão saem xaa, xab, xba, .... Se quiser queseus pedacinhos sejam nomeados como pedacinhoa,pedacinhob, ..., use:

split --lines=500 arquivo.txt pedacinho

Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
Outras dicas deste autor

Como fazer a cópia (clonar) de um HD para outro

Estatísticas completas do mercado de browsers

Redirecionando porta de saída no IPTABLES

Utilizando o pastebin pelo terminal Linux

Agendando execução de scripts PHP

Leitura recomendada

Atalhos Touchpad no KDE (Slackware)

proc/cpuinfo - Como saber a quantidade de núcleos do processador

Processos de usuário em segundo plano e como manipulá-los

Monitorando seu HD - Listando detalhes sobre os arquivos abertos no sistema

Facilitando a vida com o teclado

  

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 ....



Contribuir com comentário