[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] Backup de arquivos com data de criação no nome
From: |
Julio Cezar Neves - DISB.O |
Subject: |
RES: [shell-script] Backup de arquivos com data de criação no nome |
Date: |
Tue, 7 May 2002 13:54:51 -0300 |
Grande Rodolfo! Está tudo bem com vc, amigo?
O Aurélio andou dando umas dicas para manipulação de datas na lista que eram
muito simples, mas só eram executáveis em Linux e se não me engano estás
pilotando um HP-UX, né? Aqui vai a dica dele:
====================================>8CorteAqui8<===========================
=========
Existe alguma forma simples/pronta de pegar a data de ontem??
Lembrando que "ontem" pode ser dia 30, 31 ou 29, pode ser também do ano
passado, ano bissexto, etc...
> > que tal essa?
> >
> > $ date --date '1 day ago'
> > Ter Ago 7 11:11:11 BRT 2001
> >
> >
> > - e assim dá pra fazer com day, month, year
> > - dá pra colocar o número que quiser tb na quantidade
> > - tire o 'ago' e a data vai ser no futuro.
> >
> > exemplos:
> >
> > ontem: 1 day ago
> > amanhã: 1 day
> > daqui um mês: 1 month
> > combinação: 1 month 15 days ago
====================================>8CorteAqui8<===========================
=========
Esta é realmente uma tremenda solução em bash puro! Mas se vc estiver usando
outro sabor, a necessidade me obrigou a desenvolver 2 scrips: o primeiro -
dton.sh - transforma uma data em dias decorridos a partir de 01/01/1980 e o
segundo - ntod.sh - transforma números em datas.
Abaixo estes 2 scripts, que tb podem ser encontrados em
http://www.dicaslinux.com.br. Vale a pena uma visita. O site é mantido por
bons profissionais e está repleto de dicas.
====================================>8CorteAqui8<===========================
=========
Prompt> cat dton.sh
#!/bin/ksh
#
#======================================================================
# Calcula qtd dias entre uma data passada como parametro e 01/01/1980.
# Se nao for passado nenhum parametro a data de hoje sera assumida.
# Obs. Para executar este programa sob o sh, trocar os $((..)) por expr
#======================================================================
# Leia: Linux - Programacao Shell ISBN: 85-7452-048-9
# Autor: Julio Cezar Neves <mailto:address@hidden>
#======================================================================
#
if [ $1 ]
then
DFim=`echo $1 | cut -f1 -d"/"`
MFim=`echo $1 | cut -f2 -d"/"`
AFim=`echo $1 | cut -f3 -d"/"`
else
DFim=`date +%d`
MFim=`date +%m`
AFim=`date +%Y`
fi
TotDias=$((1 + 365 * (AFim - 1980) + (AFim - 1980) / 4))
[ $((AFim % 4)) = 0 -a $MFim -le 2 ] && TotDias=$((TotDias - 1))
[ $MFim -ne 1 ] &&
for i in `echo "31 28 31 30 31 30 31 31 30 31 30 31" | cut -f-$((MFim - 1))
-d" " 2> /dev/null`
do
TotDias=$((TotDias + $i))
done
echo $((TotDias + DFim))
-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-
Prompt> cat ntod.sh
#!/bin/ksh
#
#==========================================================
# Recebe uma qtd de dias como parametro, e o transforma em
# uma data, que significa 1/1/1980 + parametro recebido.
# Obs. Para executar este programa sob o sh, trocar por
# $((..)) por expr
#==========================================================
# Leia: Linux - Programacao Shell ISBN: 85-7452-048-9
# Autor: Julio Cezar Neves <mailto:address@hidden>
#==========================================================
#
Num=$(($1 - 1))
AFim=$((1980 + (Num / 365)))
DFim=$((Num % 365 - Num / 1460))
MFim=1
for i in 31 28 31 30 31 30 31 31 30 31 30 31
do
[ $DFim -lt $i ] && break
DFim=$((DFim - i))
MFim=$((MFim + 1))
done
[ $DFim -eq 0 ] &&
{
DFim=29
MFim=2
}
[ $DFim -le 9 ] && echo "0$DFim/\c" || echo "$DFim/\c"
[ $MFim -le 9 ] && echo "0$MFim/\c" || echo "$MFim/\c"
echo $AFim
====================================.8CorteAqui8<===========================
=========
Se precisar tb tenho rotinas para cálculo de horas.
Em tempo: Estive no III Fórum Internacional de Sistemas Abertos ai no RS e
me esqueci de te avisar :( Fica para a próxima, né?
Forte abraço,
Julio Cezar Neves
> -----Mensagem original-----
> De: Rodolfo Villanova
> [mailto:address@hidden]
> Enviada em: terça-feira, 7 de maio de 2002 12:46
> Para: address@hidden
> Assunto: [shell-script] Backup de arquivos com data de criação no nome
>
>
> Olá amigos, tudo bem?!
>
> Estou encontrando alguma dificuldade para fazer calculos com datas.
> Meu objetivo é elaborar um script que busca realizar backup
> de arquivos cujo
> nome contém a data de sua criação.
>
> Sei que existe uma formula simples para obter uma data
> anterior, do tipo:
> obter a data de dois dias antes da data atual do sistema, mas
> estou batendo
> cabeça na parede e não sai nada...!
>
> Dei uma olhada no "man" mas não encontrei algo esclarecedor.
>
> Poderia fazer uma função pra isso (tratar anos-bissextos e viradas de
> mês...argh!!), mas... pra quê reinventar a roda, não é mesmo?
>
>
> Grato antecipadamente,
>
>
> Rodolfo Villanova
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de
> programação, como perl, C etc.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------
Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html
- RES: [shell-script] Backup de arquivos com data de criação no nome,
Julio Cezar Neves - DISB.O <=