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