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

Shell et commandes POSIX Discussion :

Nombre de jours entre deux dates [AIX][KSH]


Sujet :

Shell et commandes POSIX

  1. #1
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut Nombre de jours entre deux dates
    Bonjour,

    Je cherche à identifier les fichiers dont la dernière mise à jour est postérieure à une date donnée.
    J'ai bien trouvé l'option -ctime n de la commande find, mais la valeur du paramètre est un nombre de jours alors que je voudrais partir d'une date.
    Comment donc calculer le nombre de jours entre la date courante et une date donnée ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Peux-tu nous dire si ta version de find possède l'option -newer ?
    Si j'en crois cette page, oui.

    A partir de là, il te suffirait de créer un fichier (commande touch) à la date de ton paramètre, et de rechercher tes fichiers avec l'option -newer ton_fichier...

    Contenu répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ ls -l
    total 0
    -rw-r--r-- 1 jp jp 0 nov.   1 00:00 tata
    -rw-r--r-- 1 jp jp 0 nov.   5 11:39 toto
    -rw-r--r-- 1 jp jp 0 oct.  21 00:00 tutu
    Création fichier référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ touch -d '2013/10/31' titi
    Nouveau contenu répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ ls -l
    total 0
    -rw-r--r-- 1 jp jp 0 nov.   1 00:00 tata
    -rw-r--r-- 1 jp jp 0 oct.  31 00:00 titi
    -rw-r--r-- 1 jp jp 0 nov.   5 11:39 toto
    -rw-r--r-- 1 jp jp 0 oct.  21 00:00 tutu
    Recherche des fichiers postérieur à mon fichier référence (titi) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ find . -type f -newer titi
    ./tata
    ./toto
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Merci de votre réponse rapide.
    J'avais en effet zapé l'option -newer
    Maintenant je ne suis pas sur d'avoir les droits d'écriture sur le système sur lequel s'exécutera le script (machine de production...).
    Je connais mal Unix : existe-t-il un répertoire de travail standard sur lequel je suis sur d'avoir le droit de créer un fichier ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Je ne connais pas bien non plus les systèmes Unix, mais je suppose que le répertoire /tmp devrait permettre l'écriture à tout le monde, non ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Merci pour tout, mon script fonctionne
    ... même si je ne sais toujours pas comment calculer le nombre de jours entre deux dates
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    ... même si je ne sais toujours pas comment calculer le nombre de jours entre deux dates

    Date du 31 octobre 2013 au format EPOCH :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ date -d '2013/10/31' +%s
    1383174000
    Date d'aujourd'hui au format EPOCH :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ date  +%s
    1383731620
    Différence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo "(1383731620-1383174000)/86400" | bc
    6
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Ça fonctionne surement très bien en environnement GNU, mais en POSIX (AIX plus exactement) la commande date n'a pas d'option -d
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Arf... j'oublie toujours qu'Unix n'a rien de NEW

    Désolé
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Chacun sait que le gnou est une espèce d'ongulé...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  10. #10
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Chacun sait que le gnou est une espèce d'ongulé...
    Mais uniquement de sa race alors
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  11. #11
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    Pour ceux que ça interresse,voici la transposition d'un algo qui calcule le nombre de secondes depuis epoch.
    Celui-ci est fait de façon basic en bash, il ne fait aucun controle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ cat sepoch.bash
    #!/usr/bin/bash
    annee=$1
    mois=$(( $2 + 1 ))
    [ $2 -le 2 ] && ( mois=$(($mois+12)) ; annee=$(($1+1)) )
    j=$((($annee*365)+($annee/4)-($annee/100)+($annee/400)+($mois*306001/10000)+$3))
    depoch=$(($j-719591))
    echo $((($depoch*86400)+($4*3600)+($5*60)+$6))
    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ ./sepoch.bash 1975 12 25 12 0 0
    188740800
    $ date --date='1975-12-25 12:00:00 +0000' +%s
    188740800
    Cordialement.

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

Discussions similaires

  1. calcul nombre de jours entre deux dates
    Par charlene44 dans le forum Langage
    Réponses: 7
    Dernier message: 21/08/2012, 14h06
  2. Réponses: 2
    Dernier message: 29/05/2006, 19h16
  3. [MS-DOS] Compter les nombres de jours entre deux dates diffé
    Par Furius dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/02/2006, 13h33
  4. nombre de jours entre deux date
    Par mzt.insat dans le forum Langage
    Réponses: 13
    Dernier message: 01/02/2006, 10h34
  5. [Dates] Nombre de jours entre deux dates
    Par cmoiscrat dans le forum Langage
    Réponses: 3
    Dernier message: 22/09/2005, 15h25

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