Forum Programmation.perl calcul de la taille d'un répertoire

Posté par  .
Étiquettes : aucune
0
22
août
2005
Bonjour,

Je voudrais savoir s'il existait un moyen d'obtenir la taille d'un répertoire. Pour avoir la taille d'un fichier particulier, j'utilise la fonction perl "stat". Je trouve assez fastidieux d'utiliser cette fonction dans une boucle pour calculer la taille d'un ensemble de fichiers...

J'ai pensé faire par exemple :

system('du -s /home/monrep');

mais le résultat du "du" me rend la taille suivi du répertoire en question... je désire avoir seulement un résultat numérique...

Auriez vous une meilleur solution? Merci pour votre aide.
  • # Hum

    Posté par  (site web personnel) . Évalué à 4.

    et du | cut -f1 ca donne quoi ?
    • [^] # Re: Hum

      Posté par  . Évalué à 2.

      Ou encore split dans le programme Perl, histoire de ne pas lancer deux processus pour pas grand chose ...
    • [^] # Re: Hum

      Posté par  (site web personnel) . Évalué à 0.

      puree, t abuse, c est:

      $ du -lsh
      • [^] # Re: Hum

        Posté par  (site web personnel) . Évalué à 2.

        puree, t abuse
        purée toi même !

        bon sinon avec du -lsh on a quand même le point, donc je ne capitule toujours pas :)
        • [^] # Re: Hum

          Posté par  . Évalué à 2.

          forcément; le point signifie répertoire courant ;)

          mais comme propose le maitre des chausettes, un petit du -lsh | cut -f 1 me semble utlra approprié...

          il te reste juste la taille du répertoire courant (ou celui passé en parametre genre du -lsh dir | cut -f 1), suivi de son unité (genre 312M ou 42K)...
          • [^] # Re: Hum

            Posté par  (site web personnel) . Évalué à 1.

            forcément; le point signifie répertoire courant ;)
            beh oui, je le sais, mais le monsieur du topic veut juste la taille justement

            mais comme propose le maitre des chausettes
            tu te serai pas emmélé les pinceaux toi, car là tu me cite :)
          • [^] # Re: Hum

            Posté par  . Évalué à 2.

            en remplaçant le « -h » par « -k », on obtient toujours la taille occupée en kilo-octets, ce qui est beaucoup plus adapté à une utilisation par un script.
    • [^] # Re: Hum

      Posté par  . Évalué à 1.

      Merci beaucoup!

      La commande suivante :

      $ du -s /monrep/ | cut -f1

      fait exactement ce que je veux. Il est vrai qu'en faisant un split (fonction Perl) je ferais tourner un processus shell en moins... mais bon, j'ai tendance à essayer d'écrire le moins possible de code... surtout que l'application ne sera pas énormément sollicité.

      J'avais effectivement fait le tour des paramètres de la fonction "du", mais sans succès... car on ne peux, apparemment, pas éviter d'avoir le chemin qui s'affiche sur la sortie.

      merci!
  • # Perl Power Tools

    Posté par  . Évalué à 1.

    Dans les Perl Power Tools, du a été recodé en Perl, c'est disponible sur le CPAN : http://search.cpan.org/src/CWEST/ppt-0.14/bin/du(...)

    Cela peut toujours te donner une idée pour l'écriture de ta fonction.

    Toujours sur CPAN, il y a quelques modules qui peuvent t'intéresser (http://search.cpan.org/search?query=du&mode=all)(...) :
    - Filesys::DiskUsage
    - Tie::DiskUsage

    Hope this help
  • # Calculer la taille totale des fichiers dans un repertoire

    Posté par  (site web personnel) . Évalué à 2.

    voici une petite sub assez utile


    my $size = 0;
    for my $file ( <$folder/*> ) {
    next unless -f $file;
    $size += -s $file;
    }

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.