Création
d'entreprise
Posez votre question Signaler

Différence entre 2 dates (Aix/KSH)

akouatic17 - Dernière réponse le 20 févr. 2008 à 15:50
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.
Lire la suite 

Différence entre 2 dates (Aix/KSH) »

4 réponses
Réponse
+1
moins plus
Salut,
[tmpfs]$ var="20070905"

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

248

[tmpfs]$
;-))
Ajouter un commentaire
Réponse
+0
moins plus
for fic in $(ls); do echo $fic $( date --reference=$fic '+%Y.%j'); done
Ajouter un commentaire
Réponse
+0
moins plus
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


@+
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Ce document intitulé « Différence entre 2 dates (Aix/KSH) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?