Có đá quý tốt để nhận kích thước thư mục được tính toán đệ quy không? Trong unix, tôi có thể sử dụng du
, nhưng tôi muốn một thư viện hấp thụ sự khác biệt giữa các hệ điều hành.Đệ quy nhận kích thước của một thư mục
Trả lời
Dường như sys-filesystem xử lý việc này, nhưng bạn sẽ cần thực hiện một số phép tính để chuyển đổi các khối khả dụng thành byte (bằng cách nhân với kích thước khối).
Điều này có thể là do thời gian dài trôi qua kể từ câu trả lời này, nhưng tâm lý đá quý ned xác định chính xác kích thước khối (và cũng có kích thước tính theo byte, cf. 'bytes_ {used, total, free}' chỉ trên một hệ thống tập tin (= mount) và dường như không hoạt động để xác định kích thước của một thư mục. – oliverguenther
Kiểm tra lớp File::Stat
(lưu ý rằng nó không tính kích thước của nội dung thư mục, cần phải thực hiện thủ công).
file = File::Stat.new('.')
puts file.size
Tôi cho rằng bạn đã được downvoted vì điều này trả về kích thước của thư mục, nhưng không phải là kích thước kết hợp của nội dung của thư mục. – d11wtq
Ah, nhưng tất nhiên. Đó là một cảnh báo đáng thất vọng. – fullsailor
công cụ hỗ trợ:
diruse /M %windir%
diruse /K /S %windir%
diruse /S %windir%
diruse /, %windir%
Microsoft ... Hệ thống cài đặt CD
msiexec /i %cd:~0,2%\SUPPORT\TOOLS\SUPTOOLS.MSI /q addlocal=all
Sysinternals Suite tiện ích:
du.exe -l 1 %windir%
Microsoft ...
Không rõ cách giải quyết vấn đề này. YOu sẽ cần giải thích –
Có thể một cái gì đó giống như tác phẩm này với bạn?
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'
Dưới đây là giải pháp của tôi sử dụng 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
Điều này dường như làm việc:
Dir.glob(File.join(dir, '**', '*'))
.map{ |f| File.size(f) }
.inject(:+)
Tôi nghĩ bạn thực sự chỉ nhận được độ dài của chuỗi với '(&: size)' ở đó. Những gì bạn muốn thay vào đó là '{| file | File.size (file)} '. –
@RyanLue Bạn nói đúng, tôi đã trả lời câu trả lời của mình. – yegor256
- 1. Nhận kích thước thư mục
- 2. Đệ quy tạo thư mục
- 3. Kịch bản PowerShell để Nhận một Thư mục Tổng Kích thước
- 4. Thư mục đệ quy Python đọc
- 5. PHP đường dẫn thư mục đệ quy
- 6. Linux nhận được kích thước của một thư mục và các thư mục con đến một độ sâu nhất định
- 7. Tìm kiếm đệ quy một thư mục trong Java
- 8. kích thước thư mục android
- 9. Kích thước kích thước ngăn xếp được ocupied bởi hàm đệ quy
- 10. Thư mục Zip đệ quy, lưu cho một thư mục con đã cho (Linux)
- 11. Làm cách nào để có được kích thước thư mục (tệp trong thư mục) trong C#?
- 12. Tại sao Xcode tạo đệ quy thư mục vô tận?
- 13. Tìm kiếm tập tin trong thư mục đệ quy
- 14. Xóa đệ quy các tệp và thư mục trong C#
- 15. Mẫu đầu bếp có các thư mục đệ quy
- 16. Lấy kích thước của thư mục hoặc tập tin
- 17. Kích thước tối đa của thư mục Tài liệu iPhone
- 18. tạo tập tin, đệ quy tạo thư mục
- 19. Đệ quy đổi tên thư mục trong bash
- 20. Có CMake đệ quy quét các thư mục không?
- 21. Kiểm tra đệ quy các cập nhật thư mục git
- 22. Đọc các tệp Android.mk trong thư mục con đệ quy
- 23. Powershell: Đệ quy Thay String trong Chọn Sub-files của một thư mục
- 24. Đệ quy nén thư mục của các tệp javascript thành một tệp đơn
- 25. Tải xuống thư mục đệ quy với Paramiko?
- 26. Sao chép tệp hoặc thư mục đệ quy bằng Python
- 27. Linux đệ quy chmod chỉ trên các thư mục con
- 28. Tạo tập tin và thư mục đệ quy
- 29. rất nhanh chóng nhận được tổng kích thước của thư mục
- 30. Nhận danh sách đệ quy của các tệp svn: ignore'd
liên quan: http://stackoverflow.com/questions/3632074/what-is-the -fastest-way-to-calcul-disk-usage-per-customer – coreyward
Liên quan: http://stackoverflow.com/questions/4508692/get-available-diskspace-in-ruby – coreyward