Rechercher : dans
Par :

Différence entre 2 dates (Aix/KSH)

Dernière réponse le 20 fév 2008 à 15:50:25 akouatic17, le 6 sep 2007 à 21:16:52 
 Signaler ce message aux modérateurs

Bonsoir,

Désolé, après avoir parcouru le forum, je reconnais que cela n'est pas très originale comme question mais je n'ai pas trouvé de réponse sur le forum qui fonctionne (ex : diffdate, date -d, etc ne fonctionnent pas).

Contexte : Je suis sur Unix (Aix) et je développe en KSH (uniquement).

Besoin : Je souhaite mettre en place une purge de fichiers de plus de 5jours.
Les fichiers sont du type xxx_20070906.EXT où xxx est une chaine de caractères variable et où EXT=dat, ctl, txt, etc. (extensions non fixes car différents types de fichiers)

Solution envisagée :
- Je récupére le quantième de la date du jour (date "+%j")
- Je récupère le quantième de la date du fichier (extraction/transformation de la date du nom du fichier)
- Je compare les 2 et si on est > 5jours, je supprime

Pb : Comment calculer un quantième sur une date du type 20070905 stockée dans une variable de type $DT_FILE ???

NB : Je "ne souhaite pas" de solution en perl car je ne connais pas.

Merci de votre aide...

Cordialement.

Configuration: Windows XP
Firefox 2.0.0.6

Meilleures réponses pour « Différence entre 2 dates (Aix/KSH) » dans :
Javascript - L'objet Date VoirLes particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La...
VBScript - Les fonctions de date et de temps VoirLes fonctions de date et de temps Fonction Description Date Retourne la date du système DateAdd(interval, number, date) Ajoute un intervalle de temps (interval) à une...

1

jipicy, le 6 sep 2007 à 21:56:59
  • +1

Salut,

[tmpfs]$ var="20070905"

[tmpfs]$ date --date="$var" '+%j'

248

[tmpfs]$
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

xisop, le 17 nov 2007 à 02:44:59

For fic in $(ls); do echo $fic $( date --reference=$fic '+%Y.%j'); done

Répondre à xisop

3

xisop, le 17 nov 2007 à 02:58:04

Vs n avez pas besoin de recuperer la date du fichier dans une variable ( avec un ls -l ... | awk '{ print $6 $7 $8}'
le 8ème argument peut etre l'heure si le fichier a été crée ou modifié il y a moins d'une année ( donc tu auras à gérer le cas du 8eme paramètre)
le mieux c'est de donner le nom du fichier dans une variable exemple $FICHIER
et tu obtiens l'année et le Quantième ( numéro du jour dans l'année) par la commande date :

DateFic=$(date --reference=$FICHIER '+%Y.%j)

comme cela tu ne louperas pas les fichiers vieux de plus d'une année


c'est l'idée de jipicy qui m'a fit relire le man de la commande date


@+

Répondre à xisop

4

 jidé, le 20 fév 2008 à 15:50:25

Je sais que je viens un peu après la bataille, mais je suis tombé sur cette discussion par hasard, en cherchant une réponse sur un pb similaire.

Pour supprimer des fichiers vieux de plus de x jours, on peut aussi utiliser un find -exec et -mtime:
find -name "nom_de_fichier" -mtime 5 -exec rm {} \; "path_des_fichiers"

* -mtime n : pour lister les fichiers modifiés depuis n jours,
-atime n : pour lister les fichiers accédés depuis n jours,
* -name pour chercher des fichiers selon leur nom,
-iname pour ne pas tenir compte de la casse (majusc./minusc.)
* -exec applique la commande qui suit à chaque fichier trouvé
{} représente le nom du fichier trouvé
\; permet de terminer la commande (";" avec un \ pour forcer sa prise en compte)

Cela me paraît plus simple que de calculer soi-même des différences de dates...

Répondre à jidé