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 :

Tri liste de fichiers ( GLOB )


Sujet :

Langage Perl

  1. #1
    Membre actif Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 151
    Points : 208
    Points
    208
    Par défaut Tri liste de fichiers ( GLOB )
    Bonjour,

    je récupère une "liste de fichiers" (une partie du nom en fait) , et cette liste m'arrive triée sur le nom d'origine du fichier , hors je voudrai la récupérer avec un tri par date de création du fichier .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    my $extract = $debut_chaine . $jour . "*";
     
    chdir "$path_EEC";
    @liste = glob("$extract");
    foreach my $ligne ( @liste ) { 
    	$ligne = substr($ligne,$pos_seq ,$long_seq);
    	++$nb ;
    	print "$ligne\n"; 
    	}
    Exemple : les fichiers d'origines par date :
    DC_SONUSS_123_494_B077D9D2_9999147
    DC_SONUSS_123_493_8A385FCF_9999147

    je voudrai donc au final avoir :
    494
    493

    mais j'ai l'inverse , 493 puis 494 puisque les fichiers sont "triés" par nom avec glob
    j'espère m'être fait comprendre

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    S'il te suffit d'avoir l'ordre inverse de celui retourné par glob, alors, tout simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @liste = reverse glob("$extract");
    Si cela ne suffit pas, alors il faut utiliser sort et trier sur la date. Demande si c'est cela qu'il te faut.

  3. #3
    Membre actif Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 151
    Points : 208
    Points
    208
    Par défaut
    En fait dans ce dossier il y a plusieurs milliers de fichier commençant par DC_SONUSS_ , vient ensuite le quantième du jour 123 (pour aujourd'hui) puis le séquencement 494,493 , dans le cas présent ma variable $extract ="??????????123*" et dans ma table je ne conserve que la séquence.

    Hors il arrive que la séquence soit dans le désordre , et de plus quand on arrive à 999 ça redémarre à 001 . C'est pourquoi j'ai absolument besoin de retrouver cette séquence dans l'ordre de création des fichier par exemple :

    997 998 999 001 002 et non 001 002 997 998 999 (ce qui est mon cas)

    J'espere avoir été assez clair.

  4. #4
    Membre actif Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 151
    Points : 208
    Points
    208
    Par défaut
    Après plusieurs heures de recherche sur le web (merci Qwant.com) je pense avoir trouvé ma solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    my $extract = $debut_chaine . $jour . "*";
     
    chdir "$path_EEC";
    @fichiers = glob("$extract");
     
    $cache{$_} = -M for @fichiers;
        @out = sort { $cache{$a} <=> $cache{$b} } @fichiers;
     
    foreach my $ligne ( @out ) { 
    	$ligne = substr($ligne,$pos_seq ,$long_seq);
            ++$nb ;
    	print "$ligne\n"; }
    Je vais donc tester ça en prod. A suivre ...

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Oui, à vue de nez, cette solution devrait fonctionner. En tous cas, c'est l'idée.

  6. #6
    Membre actif Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 151
    Points : 208
    Points
    208
    Par défaut
    Impeccable , ça marche à merveille ....

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2015, 14h34
  2. [XL-2007] Tri liste sur fichier excel
    Par broch01 dans le forum Excel
    Réponses: 5
    Dernier message: 08/11/2013, 14h50
  3. [WD18] Problème TRI : Liste / Fichier (algorithme)
    Par darkside1993 dans le forum WinDev
    Réponses: 24
    Dernier message: 03/05/2013, 13h36
  4. Tri d'une liste de fichiers selon un ordre
    Par Geoffrey49000 dans le forum Général Java
    Réponses: 1
    Dernier message: 09/09/2011, 00h03
  5. tri d'une liste de fichiers
    Par Kleer dans le forum C
    Réponses: 1
    Dernier message: 01/10/2007, 15h19

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