[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: |
Rodolfo Villanova |
Subject: |
RES: [shell-script] Backup de arquivos com data de criação no nome |
Date: |
Tue, 7 May 2002 15:35:53 -0300 |
Amigo Julio,
O script ntod.sh está ok, mas no dton.sh encontrei um problema.
A execução do dton.sh devolve uma diferença de 245 (dias) entre o número que
deveria retornar e o número devolvido por esse script.
Ex.:
> dton.sh 07/05/2002
8408
#quando deveria retornar:
8163
Estou meio sem tempo, mas assim que localizar o problema dou retorno à
lista, ok?
Abraço!
Rodolfo
====================================>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-