Esiste una buona soluzione per calcolare le dimensioni delle directory calcolate in modo ricorsivo? In Unix, posso usare du
, ma voglio una libreria che assorba la differenza tra il sistema operativo.Recuperare ricorsivamente le dimensioni di una directory
risposta
Sembra che questo sia sys-filesystem, ma è necessario eseguire alcuni calcoli matematici per convertire i blocchi disponibili in byte (moltiplicando per dimensione blocco).
Questo potrebbe essere dovuto al lungo tempo trascorso da questa risposta, ma il mentio ned gem determina correttamente la dimensione del blocco (e anche la dimensione in byte, cfr. 'bytes_ {used, total, free}' solo su un livello di file system (= mount) e non sembra funzionare per determinare la dimensione di una directory. – oliverguenther
Verificare la classe File::Stat
(notare che non calcola la dimensione del contenuto della directory, deve essere eseguita manualmente).
file = File::Stat.new('.')
puts file.size
Presumo che sia stato downvoted perché restituisce la dimensione della directory, ma non la dimensione combinata del contenuto della directory. – d11wtq
Ah, ma ovviamente. Questo è un avvertimento deludente. – fullsailor
Strumenti di supporto:
diruse /M %windir%
diruse /K /S %windir%
diruse /S %windir%
diruse /, %windir%
Microsoft ... sistema CD di installazione
msiexec /i %cd:~0,2%\SUPPORT\TOOLS\SUPTOOLS.MSI /q addlocal=all
Sysinternals Suite Media:
du.exe -l 1 %windir%
Microsoft ...
Non è chiaro come questo risolva il problema. Dovrai spiegare –
Potrebbe qualcosa di simile a questo lavoro per voi?
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'
Ecco la mia soluzione con 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
Questo sembra funzionare:
Dir.glob(File.join(dir, '**', '*'))
.map{ |f| File.size(f) }
.inject(:+)
Penso che in realtà stai solo prendendo la lunghezza della stringa con '(&: size)'. Quello che vuoi invece è '{| file | File.size (file)} '. –
@RyanLue Hai ragione, ho risolto la mia risposta. – yegor256
- 1. Cerca ricorsivamente una directory in Java
- 2. ricorsivamente SCP tranne directory corrente
- 3. directory ricorsivamente Elimina a Scala
- 4. Ruby: come trovo e rimuiamo ricorsivamente le directory vuote?
- 5. Come includere le directory ricorsivamente in NuSpec il file
- 6. script per eliminare ricorsivamente directory CVS sul server di
- 7. Esiste un metodo in Objective-C per creare ricorsivamente le directory da una stringa?
- 8. Java: come ottenere ricorsivamente tutte le sottodirectory?
- 9. Install_github installa ricorsivamente le dipendenze?
- 10. il modo più rapido per recuperare dinamicamente le dimensioni dell'immagine
- 11. Come controllare le dimensioni di tutte le immagini in una directory usando python?
- 12. Calcolo dimensioni directory
- 13. trova le directory di dimensioni superiori a x MB
- 14. Come enumerare ricorsivamente attraverso le proprietà dell'oggetto?
- 15. inverti ricorsivamente le ipotesi in coq
- 16. Come posso copiare ricorsivamente il contenuto della directory usando Perl?
- 17. Come recuperare un percorso di directory Oracle?
- 18. crea ricorsivamente l'albero delle directory nel burattino senza spurgo
- 19. Come recuperare un Subversion esterno senza recuperare tutte le altre directory e sottodirectory
- 20. Dimensione di una directory
- 21. Ottenere le dimensioni di una listview
- 22. Come chiamare ricorsivamente una macro in jinja2?
- 23. Trovare una chiave ricorsivamente in un dizionario
- 24. Le dimensioni di una classe java influenzano le prestazioni dell'applicazione
- 25. pacchetti di ricarica (e le loro sottomoduli) ricorsivamente in Python
- 26. Come recuperare un elenco di directory RAPIDAMENTE in Java?
- 27. Recupera le dimensioni di un'immagine nel filesystem
- 28. Come recuperare SAMAccountName da Active Directory
- 29. NSIS - Come copiare ricorsivamente escludendo i file?
- 30. Come recuperare le formali di una funzione primitiva?
correlati: http://stackoverflow.com/questions/3632074/what-is-the -fastest-way-to-calculate-disk-usage-per-customer – coreyward
Correlati: http://stackoverflow.com/questions/4508692/get-available-diskspace-in-ruby – coreyward