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