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


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Par défaut Trier des fichiers
    Bonjour,

    J'ai des fichiers qui sont regulièrement ajouté dans un répertoire et j'essaie de les ranger dans d'autre repertoire en fonction de leur type. (J'ai 2 sorte de fichier. 1 fichier en XML totoconfxml.azerty.ZER et 1 fichier binaire totoconf.azerty.ZER)

    Voila le script que j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    my $NBFILES = `find /Repertoire -type f -maxdepth 1 | wc -l`;
    #print "$NBFILES\n";
            if ($NBFILES == 0){
                    print "Il n'y a pas de nouveau fichier a déplacer\n";
            }else {
                    system "mv /Repertoire/totoconfxml* /New Repertoire/XML";
                    system "mv /Repertoire/totoconf* /New Repertoire/Conf";
                    print "des fichiers ont été deplacé\n";
            }
    Le script fonctionne et fait ce que je lui demande.
    Je voulais savoir ce que vous en pensez. Est-ce correct de procéder ainsi ?

  2. #2
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 897
    Par défaut
    Salut

    Une remarque : tu fais trop d'appels systèmes qui peuvent être aisément convertibles en appels de fonctions Perl (cf la FAQ dans ma signature). Ainsi, ton find peut être assimilé à une liste de fichiers rendu par un appel de readdir. Les appels mv peuvent être changés par des rename.
    Il vaut mieux opter pour du "tout Perl" quand c'est possible pour une meilleure portabilité du code ainsi qu'une plus grande centralisation.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Par défaut
    Merci GLDavid,

    J'ai bien remplacer mon find par l'utilisation de readdir
    Par contre pour remplacer le mv je coince.

    Si j'utilise le nom de fichier complet, ca marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rename ("/usr/MonRepertoire/totoConf-20070205-0807", "/usr//NewRepertoire/totoConf-20070205-0807");
    Mais je souhaiterai deplacer x fichiers vers la nouvelle destination

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rename ("/usr/MonRepertoire/totoConf*", "/usr//NewRepertoire");
    Comment je peux faire? Ca peux fonctionner avec rename ?

  4. #4
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour,

    Pour faire ce genre de manip, tu peux utiliser un module style File::Copy

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Par défaut
    Finalement j'ai trouvé une autre solution avec rename. C'est peut être un peu plus compliquer mais ca fonctionne donc je me dit pourquoi pas ^^
    Sauf avis contraire, je vais rester sur cette solution

    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
     
    opendir(DIR, $repertoire) || die "$repertoire: $!";   
    my @fichiers = readdir(DIR);                       
    closedir(DIR);
     
    foreach my $fichiers (@fichiers) {
                    chomp $fichiers;
     
    # Si le nom du fichier correspond a la REGEX on le deplace dans son repertoire repectif
                    if ($fichiers =~ /totoconfxml.*/g) {
                    rename ("$repertoire/$fichiers", "$repertoire/XML/$fichiers");
                    }
                    if ($fichiers =~ /totoconf.*/g) {
                    rename ("$repertoire/$fichiers", "$repertoire/Conf/$fichiers");
                   }
                 }

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

Discussions similaires

  1. Trier des fichiers à partir d'une variable File[]
    Par spaukensen dans le forum Général Java
    Réponses: 4
    Dernier message: 27/09/2010, 16h43
  2. Trier des fichiers par poids
    Par debutant14 dans le forum Windows XP
    Réponses: 2
    Dernier message: 11/08/2009, 16h10
  3. charger et trier des fichiers
    Par bubulle29 dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/06/2009, 07h32
  4. Trier des fichiers par taille par le VB
    Par tedparker dans le forum Access
    Réponses: 2
    Dernier message: 23/08/2006, 11h59
  5. trier des fichiers avec un tableau flexgrid
    Par digger dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/12/2005, 15h20

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