Manipular arquivos e calcular data

1. Manipular arquivos e calcular data

José Mario Scardelatto dos Santos
jmscardelatto

(usa Red Hat)

Enviado em 16/10/2012 - 13:26h

Bom dia pessoal!

Preciso listar "n" arquivos de um determinado diretório (exe: /export/home/teste/), recuperar parte dos nomes dos arquivos em uma variável e posteriormente comparar a variável com uma determinada data.

Por exemplo:

Tenho o arquivo TESTE-2012-09-18.LOG, preciso atribuir apenas o 2012-09-18 a uma determinada variável e posteriormente comparar essa variável (data) com uma determinada data.

Aguardo retorno de vocês !!!

Abraços





  


2. Re: Manipular arquivos e calcular data

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/10/2012 - 14:07h


ls | cut -d '\.' -f 1



3. Re: Manipular arquivos e calcular data

José Mario Scardelatto dos Santos
jmscardelatto

(usa Red Hat)

Enviado em 16/10/2012 - 14:40h

Precisa ser um .sh na cron p/ rodar diariamente....

E verificar a substring do nome do arquivo, conforme havia postado anteriormente


4. sed

Alexandre
afteixeira

(usa openSUSE)

Enviado em 16/10/2012 - 14:52h

jmarioscs escreveu:

Bom dia pessoal!

Preciso listar "n" arquivos de um determinado diretório (exe: /export/home/teste/), recuperar parte dos nomes dos arquivos em uma variável e posteriormente comparar a variável com uma determinada data.

Por exemplo:

Tenho o arquivo TESTE-2012-09-18.LOG, preciso atribuir apenas o 2012-09-18 a uma determinada variável e posteriormente comparar essa variável (data) com uma determinada data.

Aguardo retorno de vocês !!!

Abraços




Tenta usar sed..

Algo como..

for file in `ls /export/home/teste`; do
echo $file |sed -e 's/[-a-zA-Z\.]//g'
done

Não sei se é exatamente o que vc precisa.. Mas é um começo..


5. Re: Manipular arquivos e calcular data

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 17/10/2012 - 00:21h

jmarioscs escreveu:

Bom dia pessoal!

Preciso listar "n" arquivos de um determinado diretório (exe: /export/home/teste/), recuperar parte dos nomes dos arquivos em uma variável e posteriormente comparar a variável com uma determinada data.

Por exemplo:

Tenho o arquivo TESTE-2012-09-18.LOG, preciso atribuir apenas o 2012-09-18 a uma determinada variável e posteriormente comparar essa variável (data) com uma determinada data.

Aguardo retorno de vocês !!!

Abraços




O cut já resolve, fica mais rápido e simples do que o sed:



#!/bin/bash
DATA_ALVO='2012-10-17'
# levando-se em consideracao o layout de exemplo: TESTE-2012-09-18.LOG
for ARQUIVO in $(ls -1 /export/home/teste/*.LOG)
do
# captura a data
DATA=$( echo $ARQUIVO | cut -d'-' -f2 | cut -d'.' -f1)
# compare agora
if [ "$DATA_ALVO" == "$DATA" ]; then
echo "Achoooouuuu"
if
done


Espero ter ajudado.


6. Re: Manipular arquivos e calcular data

José Mario Scardelatto dos Santos
jmscardelatto

(usa Red Hat)

Enviado em 17/10/2012 - 11:01h

Preciso de algo que faça o cálculo entre datas.

Seguindo o exemplo do arquivo TEST-2012-09-18.LOG, preciso verificar se: 2012-09-18 é ou não menor que 30 dias, se for, devo excluir o arquivo.

Como posso realizar esse cáculo em shell ???

Valeu


7. Re: Manipular arquivos e calcular data

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 17/10/2012 - 11:33h

Seguindo esse formato (YYYYMMDD - 2012-09-18 ) fica fácil, basta fazer um cálculo simples:


DATA_ALVO='2012-09-15'
# retirando os hifens (tracinhos, etc)
DATA_ALVO=$(echo $DATA_ALVO | sed 's/[^0-9]*//g')


if [ $(( $(date +'%Y%m%d') - $DATA_ALVO )) -gt 30 ]; then
echo 'passaram-se mais de 30 dias';
else
echo 'ainda não passaram-se mais de 30 dias';
fi



8. Re: Manipular arquivos e calcular data

José Mario Scardelatto dos Santos
jmscardelatto

(usa Red Hat)

Enviado em 17/10/2012 - 13:56h

A instrução abaixo não funciona no Solaris. Existe outra que substitua essa ???

[ $(( $(date +'%Y%m%d') - $DATA_ALVO )) -gt 30 ];


9. Re: Manipular arquivos e calcular data

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/10/2012 - 16:36h

Se tudo o que você quer é apagar arquivos com idade maior do que um determinado número de dias, a forma mais fácil de fazer é com o comando find.

Leia a manpage do find do Solaris. Ele é bem mais limitado do que o que é usado na maioria das distribuições do Linux.


10. Re: Manipular arquivos e calcular data

José Mario Scardelatto dos Santos
jmscardelatto

(usa Red Hat)

Enviado em 17/10/2012 - 16:44h

Tenho que apagar arquivos após determinada data, porém sempre comparar o nome do arquivo (que leva a data de criação do mesmo), com a data atual.

Por exemplo:

Tenho um arquivo com data de criação de 17/09/2012, a nomenclatura do arquivo é TESTE-2012-09-17. O find, verifica propriedade de determinado arquivo. Caso esse arquivo que informei, sofra um alteração em 30/09/2012, eu perco a referência dos 30 dias.

Portanto, tenho que me basear no nome.

Exemplo: ARQUIVO TESTE-2012-09-17

Comparar 2012-09-17 com 2012-10-17, se a diferência for >= a 30 dias, eu elimino o arquivo.

Tudo isso via scrip shell e na cron. Rodando diariamente num horário pré-definido.


11. Re: Manipular arquivos e calcular data

Paulo
paulo1205

(usa Ubuntu)

Enviado em 17/10/2012 - 17:07h

Hummm... Pela cara do problema e dos nomes dos arquivos, eu supus que os arquivos seriam logs rotacionados. Se eles podem ser alterados em data posterior à que vai em seus nomes, é óbvio que não são.

Mas, então, tem certeza de que convém apagar arquivos que podem até mesmo estar em uso, só por causa do nome?

Como você está usando Solaris, o conjunto de ferramentas à sua disposição numa instalação padrão é reduzido (especialmente se comparado à maioria das distribuições de Linux). Você poderia usar o awk para intereceptar a data no nome de cada arquivo e computar o dia juliano (ver http://www.cs.utsa.edu/~cs1063/projects/Spring2011/Project1/jdn-explanation.html) correspondente, e então compará-o com o dia juliano corrente.


12. Re: Manipular arquivos e calcular data

José Mario Scardelatto dos Santos
jmscardelatto

(usa Red Hat)

Enviado em 17/10/2012 - 17:10h

Os arquivos devem ser excluidos.

Como poderia verificar se o intervalo de dis entre as datas 2012091 - 20121017 é igual ou superiror a 30 dias ?

Vc tem algum script que eu possa me basear ?



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts