Liệt kê kích thước thư mục thư mục hiện tại với thiết bị đầu cuối?


134

Tôi muốn một danh sách các thư mục từ thư mục hiện tại hoặc một thư mục mà tôi chỉ định với kích thước của chúng.

Tôi đã thử với du nhưng tôi chỉ nhận được kích thước của các thư mục tôi chỉ định (du ./f1) và ls không hiển thị kích thước của các thư mục.

Làm thế nào để tôi làm điều này mà không có bất kỳ kịch bản?


không phải là âm thanh như một kẻ ngốc, nhưng 'man du';)
Jakub

5
Cảm ơn ;-) nhưng tôi đã thử và không thể tìm thấy bất cứ điều gì. Và hãy thử Googling du!
kevin

Câu trả lời:


212

Nếu bạn muốn hiển thị tất cả các thư mục trong thư mục hiện tại:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

Để hiển thị chúng bắt đầu từ một thư mục khác:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Nếu bạn muốn đảm bảo các thư mục có tên bắt đầu bằng dấu chấm được đưa vào shopt -s dotglobtrước.


Cảm ơn tất cả các câu trả lời tuyệt vời nhưng đây là câu trả lời đơn giản nhất. Tôi quên kết thúc / trong các bài kiểm tra của tôi.
kevin

1
Trong đó -s có nghĩa là tóm tắt, hiển thị tổng số và -h có nghĩa là con người có thể đọc được
wranvaud

2
Sắp xếp các thư mục theo kích thước : du -s */ | sort -n.
Anton Tarasenko


1
@AntonTaraenko: shopt -s dotglob doc
Dennis Williamson

18

Trên máy Mac, tùy chọn --max-height được thay thế bằng -d [height]. Vì vậy, để xem danh sách có thể đọc được của con người về ổ đĩa gốc của bạn cộng với 2 cấp độ sâu, hãy sử dụng các mục sau:

du -hd 2 /* 

Lưu ý: lệnh này sẽ hiển thị hai cấp thư mục hàng đầu khỏi gốc của bạn. Điều này bao gồm di chuyển một cấp vào Tập của bạn và sẽ liệt kê các kích thước tóm tắt của từng thư mục cấp cao nhất trong mỗi tập được đính kèm của bạn. Tùy thuộc vào những gì bạn đã đính kèm, lệnh này có thể mất một chút thời gian để hoàn thành.


13

Một aproach khác là tùy chọn --max-height.

du -h --max-depth=1 .

Sẽ liệt kê tất cả các thư mục và tập tin trong thư mục hiện tại với kích thước.

Độ sâu 2 sẽ liệt kê thêm một cấp độ của các thư mục.


4
Trên Mac, nó du -hd 2 .dành cho 2 cấp độ sâu.
Ryan

À đúng rồi. Và có lẽ trên FreeBSD là tốt. Cảm ơn bạn về thông tin.
matthias krull

5

Thử:

$ du -s ./f1

hoặc là

$ du -sh ./f1

cho kích thước dễ đọc hơn.


2

$ du --max-depth=1 /var/www/ | sort -n -r


3
Khi thêm câu trả lời cho câu hỏi cũ hơn với câu trả lời hiện có, cách tốt nhất là giải thích câu trả lời của bạn khác nhau như thế nào và bao gồm một số lời giải thích để nó không phải là câu trả lời duy nhất.
Jason Aller

3
Bạn có thể mở rộng câu trả lời của bạn để giải thích những gì các tham số làm?
sửa chữa1234

2

Đáng nói đến lệnh shell NCurses Disk Use .

Ncdu là một bộ phân tích sử dụng đĩa với giao diện ncurses. Nó được thiết kế để tìm không gian trống trên một máy chủ từ xa nơi bạn không có sẵn toàn bộ thiết lập đồ họa, nhưng nó là một công cụ hữu ích ngay cả trên các hệ thống máy tính để bàn thông thường. Ncdu nhằm mục đích nhanh chóng, đơn giản và dễ sử dụng và có thể chạy trong mọi môi trường giống như POSIX tối thiểu với các cài đặt được cài đặt.


2

Dựa trên câu trả lời được chấp nhận, lệnh này sẽ hiển thị cho bạn kích thước của các thư mục trong thư mục cũng sẽ liệt kê chúng theo kích thước để bạn diễn giải dễ dàng hơn:

$ du -sh */ | sort -rn

1

Trên Mac, bạn có thể cài đặt triển khai GNU (Linux) duvới Homebrew ( brew install coreutils). Sau đó, ví dụ:

gdu folder -shL --exclude=.git

Ở đâu

  • gdulà tên được đặt cho việc triển khai GNU của du(theo mặc định Homebrew không ẩn /usr/bin/du);
  • s tạo ra tổng số lớn cho thư mục được chỉ định (bỏ qua nếu bạn muốn xem bảng phân tích);
  • h đầu ra kích thước con người có thể đọc được;
  • L theo liên kết tượng trưng;
  • --exclude=.git loại trừ thư mục git trong thư mục được chỉ định (đây chỉ là một ví dụ).

Bạn có thể bỏ qua nhiều thư mục bằng cách thêm --exclude=blah. Bạn cũng có thể chỉ định một số thư mục cùng một lúc (ví dụ gdu folder1 folder2 ...), và trong trường hợp đó, bạn có thể kết hợp tất cả các tổng số phụ vào một kích thước sử dụng tùy chọn c.


1

Đây là tập lệnh POSIX sẽ hoạt động với:

  • Một tập tin
  • Các tập tin
  • Một thư mục
  • Thư mục
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Nguồn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.