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 :

Trier des fichiers sur serveur unix par date de création


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 31
    Points
    31
    Par défaut Trier des fichiers sur serveur unix par date de création
    Bonjour,

    Je dois trier des fichiers par date de création décroissante commençant par "toto" (exemple : toto, toto2, toto3...) qui sont sur un serveur Unix puis les concaténer pour n'avoir plus qu'un seul fichier final.

    Mon principal soucis est le tri par date de création.

    Pouvez-vous m'aider ?

    Cordialement.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Bonjour,

    Il faut utiliser la fonction sort.

    Qu'avez-vous fait comme programme ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 31
    Points
    31
    Par défaut
    J'ai fait ce script en shell :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #! /bin/sh
     
    i=1
    for file in $(ls -tr toto*)
    do
    if [ $i == 1 ] 
    then	
    	i=2	
    	cat $file > concatenation_fichier.txt	
    else	
    	tail -n +2 $file >> concatenation_fichier.txt	
    fi
    done
    Mais il me faudrait ça en PERL. Sinon je peux faire un appel PERL à ce script tout simplement.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/usr/bin/perl 
    use strict;
    use warnings;
     
    # Ton répertoire
    my $repertoire = 'TON/REPERTOIRE';
     
    # Ton motif
    my $motif = 'toto';
     
    # Ton motif
    my $fichier_concat = 'FINAL.txt';
     
    opendir my $fh_rep, $repertoire or die "Impossible de lire le repertoire $repertoire ";
    my @fichier_repertoires;
    foreach my $fichier ( grep { !/^\.\.?$/ and /^$motif/i } readdir $fh_rep ) {
      next unless -f "$repertoire/$fichier";
      push @fichier_repertoires, "$repertoire/$fichier";
    }
    closedir $fh_rep;
     
    open my $fh, '>>', $fichier_concat or die "Impossible d'ecrire dans $fichier_concat\n";
    foreach my $fichier ( sort { -M $a <=> -M $b } @fichier_repertoires ) {
      print "$fichier\n";
      open FILE, '<', $fichier or die "Impossible de lire $fichier\n";
      while (<FILE>) { print {$fh} $_; }
      close FILE;
    }
    close $fh;

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 31
    Points
    31
    Par défaut
    Tout d'abord, merci de votre aide.

    La double allocation de la variable $fichier dans vos foreach ne posera pas de soucis ?

    Je testerai votre code dès que possible

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 35
    Points : 42
    Points
    42
    Par défaut
    foreach my $fichier permet de n'avoir $fichier que dans la boucle.

    En dehors ce cette-ci, la variable n'existe pas. Il n'y a donc pas de soucis.

    Cela permet en plus d'eviter le nom de variable $_ qui est defini par defaut (on a ainsi une meilleur lisibilité)

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Il n 'y a pas de double allocation car leur portée est limitée au foreach (grâce à la déclaration my). Néanmoins, pour être plus rigoureux, on peut les nommer différemment.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Points : 31
    Points
    31
    Par défaut
    Merci pour l'info

    J'utilisais pour ma part la variable $_ !

    Bonne soirée.

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Un tag résolu une si c'est réglé.

Discussions similaires

  1. Problème pour trier les fichiers d'un dossier par date
    Par Stephane_br dans le forum VB.NET
    Réponses: 7
    Dernier message: 24/07/2012, 16h34
  2. [BCB5] Recupérer fichiers sur FTP classés par date
    Par bfespi69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2010, 17h01
  3. Trier les fichiers d'un répertoire par date
    Par rouliane dans le forum Général Python
    Réponses: 7
    Dernier message: 02/08/2009, 17h26
  4. mettre des fichiers sur serveur
    Par chflb dans le forum JPA
    Réponses: 0
    Dernier message: 21/08/2008, 12h05
  5. Classement des fichiers d'un répertoire par date
    Par lunick dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2008, 14h22

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