IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Nombre de jours depuis modif d'un fichier [KSH]


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut Nombre de jours depuis modif d'un fichier [KSH]
    Bonjour Oh Grand(s) Manitou(s) du Korn Shell!

    Voilà depuis quelques heures que je suis bloqué sur une petite fonction à développer.
    J'aimerai savoir s'il est possible d'obtenir le nombre de jours depuis lequel le fichier a été modifié.

    Je bloque je bloque !

    Merci à tous pour votre aide !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    tu bidouilles la commande ls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    => ls -l --full-time | grep filename| sed 's/.*\([0-9][0-9]\)-\([0-9][0-9]\).*/\1 \2/g'
    08 13
    08 le mois, 13 le jour par exemple

    ensuite avec la fonction "date" et de l'arithmétique tu devrais t en sortir

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    ... dont la forme courte serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date -r filename '+%m %d'
    Cependant, pour le calcul sur les dates, il est préférable de convertir les dates en secondes depuis epoch, d'effectuer le calcul souhaité, puis de convertir à nouveau dans un format lisible par un humain.

    edit: Mais ça ne répond pas à ta question en fait...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    date -r filename
    lundi 13 juillet 2009, 17:22:44 (UTC+0200)
    echo "$((($(date -u +%s) - $(date -ur filename '+%s')) / 86400)) jour(s)"
    34 jour(s)
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Merci Ashin et N_Bah pour vos réponses.
    En me creusant un peu la tête, je suis passé par du PERL et voici ce que ça donne:

    date_Modif_Fichier=`perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];print "$mtime\n";' $NOMFICHIER `
    Current_Date=`date -u '+%s'`
    let "Modif_en_jour=$Current_Date-$date_Modif_Fichier"
    let "Modif_en_jour=$Modif_en_jour/3600/24"
    echo $Modif_en_jour
    On a finalement la date de Modif en jour. Y'a ptete moyen de simplifier non?

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    J'ai du mal à imaginer plus simple, que le code donné dans mon 'edit'
    ...
    ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    en gardant ta façon, on va privilégier le bourne shell:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/sh -f
     
    date_Modif_Fichier=`perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];print "$mtime\n";' $1 `
    Current_Date=`date -u '+%s'`
     
    calcul=`expr $Current_Date - $date_Modif_Fichier`
    calcul=`expr $calcul / 86400`
    echo $calcul
    sinon la solution en une ligne reste la plus simple

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Points : 211
    Points
    211
    Par défaut
    L'avantage de la solution Perl est qu'elle est universelle, y compris sur les système Unix comme Solaris, car sous Solaris, je n'ai pas à ma disposition l'option -u de date. :-(

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    +1, je n'ai pu tester que sur les RHEL


    édit: c est pas -u qui n'existe pas mais -r

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    50nio

    et
    ça fonctionne sur Solaris ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Ashin Voir le message
    en gardant ta façon, on va privilégier le bourne shell:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/sh -f
    
    date_Modif_Fichier=`perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];print "$mtime\n";' $1 `
    Current_Date=`date -u '+%s'`
    
    calcul=`expr $Current_Date - $date_Modif_Fichier`
    calcul=`expr $calcul / 86400`
    echo $calcul
    sinon la solution en une ligne reste la plus simple
    Dans le code ci-dessus quelle est la valeur de $1

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    $1 = le nom du fichier fourni au script
    usage :
    ./script nomFichier
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #12
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Points : 211
    Points
    211
    Par défaut -débat Solaris-
    N_BaH
    Je me suis mal exprimé, en fait c'est le %s qui n'existe pas en natif sur Solaris.
    -u je ne connaissais pas mais ça existe. :-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > date -u '+%s'
    %s            La commande affiche comme un format non reconnu
    > date -u '%+S'
    29             %S est le nombre de secondes courantes
    Pas grave, j'aime bien le Perl.
    et pour te réponde, oui
    ça fonctionne, c'est purement un problème de strftime qui ne gère pas l'option %s.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Flash Pascal] Nombre de jours depuis une date du passé
    Par Roland Chastain dans le forum Flash Pascal
    Réponses: 7
    Dernier message: 17/03/2014, 23h17
  2. Réponses: 2
    Dernier message: 12/08/2011, 14h07
  3. [AC-2003] Modification d'un fichier texte depuis Access
    Par phoon dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/05/2009, 16h45
  4. nombres de jours écoulé depuis une date fixe
    Par dams78 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 19/12/2007, 14h44
  5. nombre de modification d'un fichier
    Par kda007 dans le forum Langage
    Réponses: 4
    Dernier message: 15/02/2006, 22h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo