我尝试对目录中的所有文件求和,并使用File.stat().size
在Ruby中获取它们的总大小。我可以在下面看到这一点,结果远远小于du -h
关于如何进行更好的文件大小求和或可能导致差异的任何想法的结果?
~ $ du -h tmp/cache/assets
89M tmp/cache/assets
~ $ irb
irb(main):001:0> dir = "tmp/cache/assets"
=> "tmp/cache/assets"
irb(main):002:0> size = Dir.glob("#{ dir }/**/*").inject(0) {|sum, asset| sum += File.stat(asset).size ; sum }
=> 49904065
irb(main):003:0>
irb(main):004:0* puts "Bytes: #{ size }"
Bytes: 49904065
=> nil
irb(main):005:0> puts "Mb: #{ size / 1_048_576.0 }"
Mb: 47.592225074768066
请注意,Ruby报告的47mb比du
报告的89 MB要小得多。如何从Ruby获得与du -h
相同的结果?