18 novembre 2008

Date de la veille en ksh

Vous devez récupérer les fichiers de logs de la veille (ayant pour extension une date) et vous ne savez pas comment faire. Si on soustrait un jour et que nous sommes le premier jour du mois par exemple ?? Ou encore, si nous sommes le 1er jour de l'année, nous passons dans ce cas à l'année précédente.

Sachez que j'ai trouvé un script fonctionnel sur ce site : commentcamarche.net
Merci Slamagirand!

J'ai juste le format de la date :
#!/bin/ksh
#
# fonction qui recupere la date de la veille :
# date -d '1 days ago'
#
YESTERDAY=$((`date +%d` -1))
MONTH=`date +%m`
YEAR=`date +%Y`
NDAY=`date +%u`
#
if [ $YESTERDAY -eq "0" ];
then
#
MONTH=$((MONTH-1))
#
if [ $MONTH -eq "0" ];
then
#
MONTH=12
YEAR=$((YEAR-1))
#
fi
#
set `cal $MONTH ${YEAR}`
shift $(($# - 1))
YESTERDAY=$1
#
fi
########################################################
PATH="/Path/monFichierDeLogs${YEAR}-${MONTH}-${YESTERDAY}..log"

echo $PATH

Posté par fatihaelh à 16:37 - ksh - Commentaires [2] - Permalien [#]

Commentaires

    en une ligne

    C'est possible en une ligne en jouant avec l'environnement de la commande date.

    Si celle-ci croit que la Time Zone est en MET-24 (pour l'Europe).
    exemple :
    TZ="MET+24" date +"%Y/%m/%d"
    donne la date d'hier

    De plus "date" accepte des caractères neutres dans ses arguments, on peu y inclure le nom du fichier, dans votre cas ca donne :

    path=$(TZ="MET+24" date +"monfichierlog-%Y-%m-%d")

    echo $path
    monfichierlog-2008-12-11

    avantage, ca marche meme le 1er mars les années bisextile


    (j'ai trouvé ce truc sur le forum hp forums.itrc.hp.com)

    Posté par mahn, 12 décembre 2008
  • génial!!

    super, je te remercie, je vais modifier mon script dès lundi !

    Posté par fatiha, 12 décembre 2008

Poster un commentaire