[FUG-BR] [OFF-TOPIC] Ajuda comShell Script

Anderson Michel ams em srnet.com.br
Terça Novembro 18 16:34:50 BRST 2008


Sendoh Takeshi wrote:
> Desculpem a falha, esqueci de colocar o Subject no e-mail anterior.
> 
> ----------------
> 
> Boa tarde.
> 
> Tenho um programa que gera dados a partir de medições de vários aparelhos e
> grava esse dados em um formato especial.
> A partir daí, é feito o download dessa base de dados em outra máquina,
> compactado. O arquivo então é descompactado gerando vários arquivos do tipo
> 00-01 , 01-01 , 02-01 , etc.
> Foi criado um script pra automatizar todo o processo, mas tem partes em que
> estou encontrando bastante dificuldade por não ser  "íntimo" do shell
> script.
> Em determinado momento, acontece a seguinte situação:
> 
> ............................................
> tar -zxvf /tmp/dados/arquivo.tgz
> for i in 00-01 01-01 02-01 03-01 04-01 05-01 06-01 07-01 08-01 09-01
> do
>      comandos...
> done
> 
> restante do script...
> 
> 
> 
> No for, estão as extensões dos arquivos descompactados (o prefixo é igual
> para todos) e toda vez antes de rodar o script estão sendo inseridos na mão.
> Gostaria de automatizar isso. Mas tem outro problema: nem sempre os arquivos
> são sequenciais (00-01, 01-01, 02-01), pode ter 01-02, 02-03 e assim por
> diante, mas sempre mantém este tipo de extensão. E também, a quantidade de
> arquivos descompactados também é váriavel, como no exemplo de cima tem 10
> arquivos (e todos sequenciais), mas pode ter 5, 15, 20, 30 arquivos; sendo
> ou não sequenciais; depende (e varia) muito.
> 
> Minha dúvida é: Como eu poderia fazer para que o for pegasse os valores
> ("extensões" dos arquivos) a partir desse diretório? Ler os arquivos que
> estão no diretório usado e colocá-los no laço for, independente da
> quantidade e se são ou não sequenciais.

Para ler os arquivos do diretório, independente da quantidade, use o 
find, ele retornará o resultado para o for:

for i in $( find /diretorio/ -name 'prefixo*' -print )

ou

for i in $( find /diretorio/ -type f -print )

> 
> obs: No diretório ficam somente esses arquivos, do tipo prefixo-00-01.
> prefixo-01-02, prefixo-03-02, etc
> 
> Qualquer ajuda é bem vinda. Obrigado
> 
> 


Mais detalhes sobre a lista de discussão freebsd