shell-script-pt
[Top][All Lists]
Advanced

[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-




reply via email to

[Prev in Thread] Current Thread [Next in Thread]