O comando split

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

[ Hits: 67.143 ]

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

Extraindo seu endereço IP com shell script (egrep + awk)

Gerando uma consulta randômica no MySQL

Apache2 - Forçando redirecionamento do site para o www

Descobrindo o PageRank de um site via linha de comando

Como checar se sua placa possui sinal físico de rede

Leitura recomendada

Obtendo informações de hardware no Linux

Recuperação de sistema de arquivos por queda de energia

Pacotes RPM no CentOS - Erro: "Warning: RPMDB altered outside of yum" [Resolvido]

Encontrar IP duplicado na rede

Jogar saída de microfone local para host remoto

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts