¿Hay alguna joya para obtener tamaños de directorio calculados recursivamente? En Unix, puedo usar du
, pero quiero una biblioteca que absorba la diferencia entre SO.Obtener recursivamente el tamaño de un directorio
Respuesta
Parece que sys-filesystem maneja esto, pero necesitará hacer algunos cálculos matemáticos para convertir los bloques disponibles en bytes (multiplicando por tamaño de bloque).
Esto puede deberse al largo tiempo transcurrido desde esta respuesta, pero el mentio ned gema determina correctamente el tamaño del bloque (y también el tamaño en bytes, cf. 'bytes_ {used, total, free}' solo en un nivel de sistema de archivos (= mount) y no parece funcionar para determinar el tamaño de un directorio. – oliverguenther
Consulte la clase File::Stat
(tenga en cuenta que no calcula el tamaño del contenido del directorio, debe hacerse manualmente).
file = File::Stat.new('.')
puts file.size
Supongo que fue downvoted porque esto devuelve el tamaño del directorio, pero no el tamaño combinado de los contenidos del directorio. – d11wtq
Ah, pero por supuesto. Esa es una advertencia decepcionante. – fullsailor
herramientas de soporte:
diruse /M %windir%
diruse /K /S %windir%
diruse /S %windir%
diruse /, %windir%
Microsoft ... Sistema de CD de instalación
msiexec /i %cd:~0,2%\SUPPORT\TOOLS\SUPTOOLS.MSI /q addlocal=all
Sysinternals Suite Utilidades:
du.exe -l 1 %windir%
Microsoft ...
No está claro cómo esto resuelve el problema. Necesitarás explicar –
Podría algo así como este trabajo para usted?
def directory_size(path)
path << '/' unless path.end_with?('/')
raise RuntimeError, "#{path} is not a directory" unless File.directory?(path)
total_size = 0
Dir["#{path}**/*"].each do |f|
total_size += File.size(f) if File.file?(f) && File.size?(f)
end
total_size
end
puts directory_size '/etc'
aquí está mi solución utilizando 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
Esto parece funcionar:
Dir.glob(File.join(dir, '**', '*'))
.map{ |f| File.size(f) }
.inject(:+)
Creo que en realidad estás obteniendo la longitud de la cadena con '(&: size)' allí. Lo que quiere en su lugar es '{| archivo | File.size (file)} '. –
@RyanLue Tienes razón, arreglé mi respuesta. – yegor256
- 1. Script de PowerShell para obtener un tamaño total de directorio
- 2. ¿Cómo eliminar el directorio recursivamente?
- 3. Tamaño de un directorio
- 4. Encontrar el archivo más antiguo (recursivamente) en un directorio
- 5. ¿Cómo crear recursivamente un directorio en Qt?
- 6. IOS - Obtener suma de tamaño de archivo en el directorio
- 7. Script para borrar recursivamente el directorio CVS en el servidor
- 8. ¿Cómo recupero el tamaño de un directorio de Perforce?
- 9. Verificar recursivamente las actualizaciones del directorio git
- 10. Java: ¿cómo obtener todos los subdires recursivamente?
- 11. Difiere un directorio recursivamente, Ignorando todos los archivos binarios:
- 12. Cómo mostrar el contenido del directorio del FTP remoto, recursivamente
- 13. android tamaño de directorio
- 14. Obtener tamaño de archivo/directorio con Java 7 nuevo IO
- 15. Cómo obtener el tamaño de un NSString
- 16. python. obtener el tamaño de un objeto
- 17. Obtener el Directorio de aplicaciones
- 18. Obtener rutas absolutas de todos los archivos en un directorio
- 19. ¿Cómo obtengo un tamaño de directorio (archivos en el directorio) en C#?
- 20. Limitar el tamaño del directorio de caché
- 21. comprime recursivamente el directorio de archivos javascript en un solo archivo
- 22. Cómo cambiar el permiso de un directorio recursivamente utilizando NSFileManager setAttributes
- 23. Obtener el tamaño de ZipInputStream
- 24. obtener patrones internos recursivamente usando regex C#
- 25. Búsqueda de archivos recursivamente
- 26. ¿Cómo obtener el directorio actual?
- 27. ¿Cómo obtener el tamaño total de los archivos en el directorio?
- 28. ¿Cómo puedo copiar recursivamente los contenidos del directorio usando Perl?
- 29. Cómo eliminar archivos recursivamente
- 30. Obtener el directorio de un archivo de script bash en
relacionadas: http://stackoverflow.com/questions/3632074/what-is-the -fastest-way-to-calculate-disk-usage-per-customer – coreyward
Relacionado: http://stackoverflow.com/questions/4508692/get-available-diskspace-in-ruby – coreyward