ler varios arquivos txt [RESOLVIDO]

1. ler varios arquivos txt [RESOLVIDO]

rodrigo martins
rodrigomb

(usa CentOS)

Enviado em 06/02/2009 - 10:49h

olá pessoal estou com uma duvida aqui, eu estou bolando um script que vai pegar varios arquivos de log em uma pasta e jogar pra um ftp meu em pastas separadas (clientes)

o problema é q eu preciso ler cada arquivo e mandar via ftp na pasta especifica , com 1 arquivo só consegui, eu adicionei um numero no comeco do arquivo , li com um cat e fiz um case com ftp pra cada pasta especifica do cliente no meu ftp.

a duvida agora é como ler todos os arquivos de log de uma vez tipo um cat pra cada arquivo: arq1.txt arq2.txt arq3.txt... depois usar a parte do meu script pra enviar via ftp.

pode ter logs de cliente 1 , cliente 2 etc...

usando um for será?

desculpe se nao fui claro, se quiserem eu colo o codigo aqui e explico melhor caso nao entendam minha dificuldade.

obrigado


  


2. Re: ler varios arquivos txt [RESOLVIDO]

Robson Padilha Cordeiro
robsonpc

(usa Debian)

Enviado em 06/02/2009 - 11:07h

Use um loop pros cat com o for e sete uma variavel pro numero do arquivo:

x=0
for
cat arq(x+1).txt //cada passada incrementa 1
end for

//ta + ou - pra vc ter uma ideia :) So acertar a sintaxe. Ta meio Delphi mas espero que entenda rss


3. Re: ler varios arquivos txt [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 06/02/2009 - 11:18h

Seria isso:

$ cat arq1.txt arq2.txt arq3.txt ... > concatenado.txt

O arquivo 'concatenado.txt' terá como conteúdo todos os textos contidos nos arquivos arq1.txt arq2.txt ...

Um exemplo em shell script:
----------
#!/bin/sh
cat "[email protected]" > concatenado.txt
----------

Executando:
$ ./script arq1.txt arq2.txt arq3.txt ...



4. Re: ler varios arquivos txt [RESOLVIDO]

rodrigo martins
rodrigomb

(usa CentOS)

Enviado em 06/02/2009 - 12:01h

obrigado pelas respostas me abriram os olhos!

eu acho q consegui resolver com as dicas, usei o for com awk para pegar a lista dos arquivos no txt e depois o cat, pelo menos ele ta pegando de uma lista que eu fiz do diretorio e mandando certinho pra cada pasta especifica no servidor... so falta agora gerar a lista dos txts do diretorio q eu vou setar


ai vai o codigo pra quem quiser observar/usar


for i in $(awk '{print $1}' teste.txt)
do

id_empresa=$(cat $i | head -n 5 | tail -n 1)

case $id_empresa in

1)

arquivo=$i
log_dir=/opt/
dir_cliente=/diretorio/ftp/cliente1

ftp -vn ftp.blablabla.com.br <<EOF
user usuario senha
passive
binary
cd $dir_cliente
lcd $log_dir
put $arquivo
quit
EOF
;;
2)

arquivo=$i
log_dir=/opt/
dir_cliente=/diretorio/ftp/cliente2

ftp -vn ftp.blablabla.com.br <<EOF
user usuario senha
passive
binary
cd $dir_cliente
lcd $log_dir
put $arquivo
quit
EOF
;;
esac

done

ai por exemplo em cada log meu na 5º linha eu botei numero... tipo cliente1 = 1 , cliente 2 = 2 etc...

ai eu vou gerar uma lista de txts do diretorio /opt/ q no caso ai é o teste.txt

ai o scripq eu colei vai ler arquivo por arquivo listado no teste.txt na 5 linha e jogar no ftp na pasta correspondente.

nao vou marcar como resolvido ainda pois ainda vou testar em definitivo depois do almoço.

obrigado pela ajuda galera