FGREP Em Alguns Arquivos de uma Pasta [RESOLVIDO]

1. FGREP Em Alguns Arquivos de uma Pasta [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 25/01/2012 - 18:41h

Saudações a todos,

Tenho um comando fgrep que funciona para todos os arquivos existentes em uma pasta:

fgrep -f $ArqBuscaPar -r -h $PstResultMSC_MGEPP > $ArqBuscaParResul

Mas gostaria de executar esse fgrep em apenas alguns arquivos de nome padronizado. Gero alguns arquivos diariamente e todos (independente do dia que são gerados) estão na mesma pasta, mas quero realizar o fgrep em apenas nos arquivos gerados naquele dia. O dia de criação do arquivo está especificado no nome dele.

Exemplo:

Pasta1
Estação1_20120123.txt
Estação1_20120124.txt
Estação1_20120125.txt
Estação2_20120123.txt
Estação2_20120124.txt
Estação2_20120125.txt

Eu gostaria de executar o fgrep apenas nos arquivos que contenham 20120125 no nome. Tem alguma forma de fazer isso??

Abraços,
Diego Tavares


  


2. Re: FGREP Em Alguns Arquivos de uma Pasta [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 25/01/2012 - 20:09h

Você poderia utilizar o comando date ao seu favor. Considerando o formato utilizado no seus exemplos, você poderia fazer o seguinte:

$ fgrep 'palavra-chave' Estacao<estação>_$(date +%Y%m%d).txt

Veja a saída desse nome pelo shell, considerando apenas a estação 1:

$ echo "Estação1_$(date +%Y%m%d).txt"
Estação1_20120125.txt


Você pode iterar sobre cada estação ou utilizar uma lógica diferente. Fica a gosto do usuário. =)


3. Re: FGREP Em Alguns Arquivos de uma Pasta [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 26/01/2012 - 10:39h

Cara, valeu pela ajuda, mas a intenção é manter o resultado do fgrep dos arquivos desejados no mesmo arquivo. Ficando o resultado do fgrep:

Estação1
Config1 X
Config2 Y
Config3 Z
Estação2
Config1 X
Config2 Y
Config3 Z

Porq depois q eu fizer o fgrep, vou formatar o arquivo para subir ele em um banco de dados.

Como todos os arquivos estão em uma pasta, eu tenho a possibilidade de apaga-los ou executar o fgrep em uma pasta temporária e mover os arquivos do dia para uma pasta final, mas gostaria de saber se há como fazer o fgrep em apenas nos arquivos desejados.




4. Re: FGREP Em Alguns Arquivos de uma Pasta [RESOLVIDO]

Elder Marco
eldermarco

(usa Fedora)

Enviado em 26/01/2012 - 10:58h

Ué, mas foi essa a resposta que eu te dei. A saída do comando date irá considerar apenas o dia atual, quando você executa o script. Para a saída que você quer poderia criar um laço em que para cada arquivo nesse dado dia você pegasse as configurações e salvasse. Então passava para o próximo. Mais ou menos assim, considerando que você tem 6 estações.


hoje="$(date +%Y%m%d)"
for estacao in 1 2 3 4 5 6; do
echo "Estacao $estacao:"
pega_config "Estacao${estacao}_$hoje.txt"
done


A função pega_config irá pegar cada uma das configurações que você quer no script e imprimir elas na tela. Você pode redirecionar isso para um arquivo. Isso depende de como está o arquivo que você quer pegar, não dá para eu advinhar, afinal. Basta apenas escrever essa função que resolva isso. Note que somente os arquivos do dia corrente é que serão considerados no script.


5. Re: FGREP Em Alguns Arquivos de uma Pasta [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 30/01/2012 - 11:41h

Cara, eu preferi mover para uma pasta temporária, executar o fgrep e mover os arquivos para a pasta de destino final deles.

Meu script já tem muito loops e achei q fosse ficar melhor estruturado assim até mesmo para depois de eu concluir ele e depois quando ñ for mais eu q estiver responsável pela execução do script.

Mas valeu pela ajuda!!!


6. Re: FGREP Em Alguns Arquivos de uma Pasta [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/01/2012 - 23:21h

diegoneto escreveu:

fgrep -f $ArqBuscaPar -r -h $PstResultMSC_MGEPP > $ArqBuscaParResul




# padrão
# ano 2012, mes 01, estação etc separado ou tudo junto
#
_DATA=$1
_ESTACAO=$2

ls |
grep ${_DATA} |
grep ${_ESTACAO} |
fgrep -f $ArqBuscaPar -r -h $PstResultMSC_MGEPP > $ArqBuscaParResul


Boa sorte!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts