dvinciguerra
(usa Debian)
Enviado em 01/02/2012 - 10:33h
Ola...
__ START SCRIPT __
#!/usr/bin/perl
use Getopt::Std;
use vars qw($opt_t);
&getopts('t:') or die "Erro: Opcao nao existe! Execute o programa seguindo o exemplo: run_contagem_final -t synop\n";
unless( $opt_t ){
print "Entre com o Parametro 't' e o tipo correspondente.\n";
print "Exemplo: run_contagem_final.pl -t synop\n";
exit;
}
# nomes e diretórios para os arquivos de destino
my $arquivo = $opt_t."_totalmes.txt";
my $arquivo2 = $opt_t."_mediames.txt";
my $arquivo3 = $opt_t."_totaldiario.txt";
# efetua a cópia propriamete dita dos arquivos.
foreach my $ano (2011..2011) {
my $type = $ano."_".$opt_t.".txt";
print "$type\n";
system("cat $ano/total_mensal_$opt_t.txt >> $arquivo");
system("cat $ano/$type >> $arquivo3");
system("cat $ano/media_mensal_$opt_t.txt >> $arquivo2");
}
__ END SCRIPT__
Note que acima a cópia dos arquivos é feita dentro de um loop (foreach) que para mim não
serve para nada, pois roda sempre uma só vez e usa o identificador como nome do diretório.
Então para fazer o que você quer eu aconselho que este trecho seja mudado para:
# efetua a cópia propriamete dita dos arquivos.
my $type = "2011_".$opt_t.".txt";
print "$type\n";
system("mv /meu/diretorio/total_mensal_$opt_t.txt >> $arquivo");
system("mv /meu/diretorio/$type >> $arquivo3");
system("mv /meu/diretorio/media_mensal_$opt_t.txt >> $arquivo2");
No exemplo acima foi alterado o cat para o mv e o 2011 não faz mais referencia ao diretório
onde os arquivos estão mas sim o caminho antes dos nomes.
O script completo pode ser visto no link abaixo:
http://codepad.org/3etjza5d