7
votes

Obtenir récursivement la taille d'un répertoire

Y a-t-il un bon bijou pour obtenir des tailles de répertoire calculées de manière récursive? Dans UNIX, je peux utiliser du , mais je veux une bibliothèque qui absorbe la différence entre le système d'exploitation.


2 commentaires

Liée: Stackoverflow.com/Questtions/3632074/...


Connexes: Stackoverflow.com/Questtions/4508692/...


6 Réponses :


1
votes

ressemble à SYS-FileSystem gère cela, mais vous devrez faire des mathématiques à Convertissez les blocs disponibles en octets (en multipliant par taille de bloc).


1 commentaires

Cela peut être dû le long temps passé depuis cette réponse, mais le gemme mentionné détermine correctement la taille du bloc (ainsi que la taille des octets, cf. bytes_ {utilisé, total, libre} uniquement sur un système de fichiers ( = montage) niveau et ne semble pas fonctionner pour déterminer la taille d'un répertoire.



-2
votes

Consultez le fichier Fichier :: STAT Classe (Notez qu'il ne calcule pas la taille du contenu du répertoire, il doit être effectué manuellement). xxx

http://ruby-doc.org/core-1.9.3/file/stat.html#method-iforme


1 commentaires

Je suppose que vous avez été bulled parce que cela renvoie la taille du répertoire, mais pas la taille combinée du contenu du répertoire.



-3
votes

Outils de support:

du.exe -l 1 %windir%


1 commentaires

Ce n'est pas clair comment cela résout le problème. Vous devrez expliquer



2
votes

Quelque chose comme ça peut-être pour vous? XXX


0 commentaires

2
votes

Voici ma solution en utilisant http: // ruby- doc.org/core-2.2.0/file.html#method-c-size :

def directory_size(path)
  size=0
  Dir.glob(File.join(path, '**', '*')) { |file| size+=File.size(file) }
  size
end


0 commentaires

5
votes

Cela semble fonctionner: xxx


2 commentaires

Je pense que vous venez d'obtenir la longueur de la chaîne avec (&: taille) là. Ce que vous voulez, c'est {| fichier | Fichier.size (fichier)} .


Ou utilisez somme au lieu de injecter (: +) (testé sur Ruby 2.6.4)