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

Langage Perl Discussion :

Récupérer la date de modification d'un dossier


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut Récupérer la date de modification d'un dossier
    Bonjour,

    j'aimerai récupérer la date de modification d'un dossier contenant bcp de fichiers afin d'éviter de lister son contenu plusieurs fois inutilement si je sais qu'il n'a pas été modifié depuis la dernière liste générée.

    J'ai vu que l'option -M fonctionnait (sur un disque NTFS), mais j'ai du mal à bien comprendre la valeur que j'ai... il s'agit du nbre de jour depuis lequel le script s'exécute moins la date de modif du fichier/dossier.
    Comment obtenir une valeur unique mesurant la date de modif du dossier (cad sans la duree d'execution du script?).

    J'espere avoir ete assez clair...
    Si en plus, vous savez comment je peux m'assurer, de façon portable (linux/win32) si je suis sur un disque NTFS... (d'après la lettre de lecteur obtenue par le chemin du dossier à tester) ....

    Merci d'avance et bon week end. Bonnes vacances aussi

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Splug
    J'ai vu que l'option -M fonctionnait (sur un disque NTFS), mais j'ai du mal à bien comprendre la valeur que j'ai... il s'agit du nbre de jour depuis lequel le script s'exécute moins la date de modif du fichier/dossier.
    Comment obtenir une valeur unique mesurant la date de modif du dossier (cad sans la duree d'execution du script?).
    La fonction stat() te donne directement cette information (d'ailleurs -M appelle stat() en sous main, la plupart du temps il est plus utile de savoir si un fichier est "vieux" que de connaître sa date exacte de modification) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $mtime = (stat('fichier'))[9]
    (NB : Tu peux utiliser localtime() sur le résultat pour avoir une date plus humaine...)

    Citation Envoyé par Splug
    J'espere avoir ete assez clair...
    Si en plus, vous savez comment je peux m'assurer, de façon portable (linux/win32) si je suis sur un disque NTFS... (d'après la lettre de lecteur obtenue par le chemin du dossier à tester) ...
    Je ne crois pas que ce soit possible... Il n'y a même pas de lettre de lecteur sous Linux, et on peut monter un FS n'importe où. Essaie plutôt de prendre ton problème autrement.

    --
    Jedaï

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 71
    Points
    71
    Par défaut
    la date que tu obtiens est la date unix : nombre de seconde écoulées depuis le 1er janvier 1970

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par mollux
    la date que tu obtiens est la date unix : nombre de seconde écoulées depuis le 1er janvier 1970
    Pas avec -M : la date obtenu est le nombre de jour depuis la dernière modification du fichier, avec (stat())[9] par contre, on obtient bien ce que tu dis, et il faut alors utiliser localtime() dessus pour obtenir un format de date plus lisible.

    --
    Jedaï

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut
    La fonction stat() te donne directement cette information (d'ailleurs -M appelle stat() en sous main, la plupart du temps il est plus utile de savoir si un fichier est "vieux" que de connaître sa date exacte de modification)
    stat() fonctionne sur un dossier ?

    Splug a écrit :
    J'espere avoir ete assez clair...
    Si en plus, vous savez comment je peux m'assurer, de façon portable (linux/win32) si je suis sur un disque NTFS... (d'après la lettre de lecteur obtenue par le chemin du dossier à tester) ...
    Je ne crois pas que ce soit possible... Il n'y a même pas de lettre de lecteur sous Linux, et on peut monter un FS n'importe où. Essaie plutôt de prendre ton problème autrement.
    Evidemment, j'aurai testé auparavant que je suis sous Windows, donc le test du systeme de fichier NTFS ne s'appliquera que dans ce cas. En fait, j'appelle une fonction generique pour obtenir la liste des fichiers (optionnellement recursive) d'un dossier. Cette fonction fait appel à une fonction Windows ou une fonction Linux selon l'OS détecté. Le test du disque NTFS se ferait donc dans la fonction Windows.
    Je suis presque sûr que c'est possible, via sans doute Win32 ou Win32API ou un module du genre, mais j'espérais que quelqu'un l'ayant utilisé me conseille là dessus.
    Le but étant de ne pas scanner le contenu du dossier si je suis sûr que ce dernier n'a pas été modifié depuis le dernier scan, ce qu'il est possible de faire avec le NTFS. Et cela fera gagner plusieurs minutes à mon programme, ce qui n'est pas négligeable!
    Si pas d'infos là dessus, je posterai ce que j'ai trouvé...

    bonne fin de week end.

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    stat() fonctionne sur un dossier ?
    Je suppose que ça dépend des FS mais en général ça doit être le cas (-M utilise stat() de toute façon, donc si -M marche...).

    Le but étant de ne pas scanner le contenu du dossier si je suis sûr que ce dernier n'a pas été modifié depuis le dernier scan, ce qu'il est possible de faire avec le NTFS. Et cela fera gagner plusieurs minutes à mon programme, ce qui n'est pas négligeable!
    Dans ce cas pourquoi ne pas faire simplement un test pratique ? Créer un dossier, essayer d'obtenir sa date de modif, si ça ne marche pas tu n'es pas sous NTFS... Créer un fichier dans le dossier, vérifier si la date de modif a changé, si oui, etc...
    En plus ainsi tu sauras si tu es sur un FS supportant la fonctionnalité qui t'intéresse, pas seulement si tu es sous NTFS.

    --
    Jedaï

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut
    Bonjour, merci Jedai, bonne idée...

    sauf que je me suis aperçu que même lorsque ça marche, la date de modification du dossier ne change que si on modifie son contenu immédiat. Modifier le contenu d'un sous-dossier ne permet pas de savoir si le dossier qui le contient a subi des changements... donc mon truc tombe à l'eau.

    bonne semaine.

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

Discussions similaires

  1. Récupérer dernière date de modification fichier win32
    Par crazydindon dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2010, 12h17
  2. Réponses: 2
    Dernier message: 22/10/2009, 21h39
  3. Récupérer la date de modif d'un fichier
    Par Sensei.Dje dans le forum C
    Réponses: 1
    Dernier message: 04/01/2008, 10h57
  4. [Dates] Afficher la date de modification d'un dossier
    Par roots_man dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/2006, 15h31
  5. Récupérer la date de modification d'un formulaire
    Par superviny dans le forum Access
    Réponses: 6
    Dernier message: 02/06/2006, 15h00

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