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 :

compte de fichiers contenus dans des sous répertoires


Sujet :

Langage Perl

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut compte de fichiers contenus dans des sous répertoires
    Bonjour,

    J'ai un répertoire contenant plusieurs sous-répertoires, chacun d'eux contenant plusieurs fichiers. J'aimerais lister chaque sous-répertoire ainsi que le nombre de fichiers qu'il contient. Je ne sais pas quelles fonctions utiliser.

    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
    #!/usr/local/bin/perl
     
    use strict;
     
     
    my $Repertoire = 'P:/Theorie/PCR_Bact_Hybridation/Fichiers_FASTA_74_79';
    my $pRep;
    opendir ($pRep,$Repertoire) or die ("IMPOSSIBLE D'OUVRIR $pRep !!!!\n");
    my @Rep_liste = readdir($pRep);	# liste des sous répertoires
    closedir ($pRep);
     
    # pour chaque sous répertoire
    foreach my $S_Rep (@Rep_liste)
    {
            my $pS_Rep;
            my $S_Repertoire = 'P:/Theorie/PCR_Bact_Hybridation/Fichiers_FASTA_74_79/'.$pS_Rep;
            opendir ($pS_Rep,$S_Repertoire) or die ("IMPOSSIBLE D'OUVRIR $S_Rep !!!!\n");
            my @S_Rep_liste = readdir($pS_Rep);	# liste des fichiers du sous répertoire
            closedir ($pS_Rep);
     
            print "Repertoire : $S_Rep\t". @S_Rep_liste." fichiers\n";
            #map{print $_."\n";}@S_Rep_liste;
    }

    Merci beaucoup,


    Jasmine,

  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
    Un truc comme :
    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
    #!/usr/bin/perl
    use strict; use warnings;
     
    my $path = shift;
     
    opendir my($dir), $path
      or die "Can't open $path : $!\n";
     
    while( my $filename = readdir $dir ) {
      next if $filename =~  m/^\.\.?$/;
     
      my $subpath = "$path/$filename";
      if( -d $subpath ) {
        opendir my($subdir), $subpath
          or die "Can't open $subpath : $!\n";
        my $count = () = readdir $subdir;
        print "$filename : ", $count - 2, " files\n";
      }
    }
     
    closedir $dir;
     
    __END__
    --
    Jedaï

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci, cela fonctionne très bien.
    J'aimerais savoir à quoi servent ces lignes?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    next if $filename =~  m/^\.\.?$/;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "$filename : ", $count - 2, " files\n";
    Est-ce dû à des fichiers cachés à soustraire du compte?


    Merci beaucoup,


    Jasmine,

  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
    Oui, parce qu'un répertoire contient toujours les pseudo-répertoires "." (le répertoire lui-même) et ".." (remonter d'un niveau). (sauf la racine bien sûr...)

    Peut-être ceci serait-il préférable :
    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
    #!/usr/bin/perl
    use strict; use warnings;
     
    my $path = shift;
     
    opendir my($dir), $path
      or die "Can't open $path : $!\n";
     
    while( my $filename = readdir $dir ) {
      next if $filename =~  m/^\.\.?$/;
     
      my $subpath = "$path/$filename";
      if( -d $subpath ) {
        opendir my($subdir), $subpath
          or die "Can't open $subpath : $!\n";
        my $count = grep {not m/^\.\.?$/} readdir $subdir;
        print "$filename : ", $count, " files\n";
      }
    }
     
    closedir $dir;
     
    __END__
    --
    Jedaï

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci pour ces explications, je peux clore le sujet.


    Bonne journée,



    Jasmine,

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

Discussions similaires

  1. VBA Recherche de Fichier dans des sous répertoires
    Par GuiJenn34 dans le forum Général VBA
    Réponses: 12
    Dernier message: 09/06/2015, 14h14
  2. [XL-2003] recherche un fichier dans des sous répertoire et recopier son contenu
    Par hallscar dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/12/2011, 20h30
  3. Réponses: 7
    Dernier message: 10/12/2007, 11h27
  4. Suppression de fichiers dans des sous-répertoires
    Par astrolane dans le forum Langage
    Réponses: 2
    Dernier message: 07/09/2007, 15h22
  5. Recherche de fichiers dans des sous répertoires
    Par Mimi Bulles dans le forum Langage
    Réponses: 8
    Dernier message: 25/04/2006, 16h41

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