Hiển thị mỗi kích thước thư mục con trong một định dạng danh sách bằng cách sử dụng một dòng lệnh trong Bash?


100

Tôi muốn có được một danh sách các thư mục và kích thước của chúng trong một định dạng danh sách như cách bạn nhận được khi bạn làm một ls -l.

Có điều là có một lệnh một dòng có thể làm điều này? Tôi thấy những người khác có các lệnh dài chỉ để xuất này. Điều đó quá dài.

Lệnh nào có thể làm điều này hoặc kết hợp các lệnh có thể dễ dàng gõ? du -hcung cấp cho nó, nhưng nó hiển thị tất cả các thư mục con không phải là những gì tôi muốn. chỉ các thư mục thư mục hiện tại.

Câu trả lời:


71

Bạn có thể muốn xem các thư mục theo thứ tự kích thước:

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp

Điều này không hoạt động nếu có số lượng lớn các mục trong thư mục. bash: /run/current-system/sw/bin/du: Argument list too long
Chris Stryczynski

123

Thử đi

du -h --max-depth=1

Đầu ra

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .

Thay thế

Nếu --max-depth=1hơi lâu so với sở thích của bạn, bạn cũng có thể thử sử dụng:

du -h -s *

Điều này sử dụng -s( --summarize) và sẽ chỉ in kích thước của thư mục theo mặc định. Bằng cách chuyển tất cả các phần tử trong thư mục làm việc hiện tại ( *), nó tạo ra đầu ra tương tự như --max-depth=1sau:

Đầu ra

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src

Sự khác biệt là tinh tế. Cách tiếp cận trước đây sẽ hiển thị tổng kích thước của thư mục làm việc hiện tại và tổng kích thước của tất cả các thư mục được chứa trong đó ... nhưng chỉ tối đa đến độ sâu 1.

Cách tiếp cận thứ hai sẽ tính toán tổng kích thước của tất cả các mục được truyền riêng lẻ . Do đó, nó bao gồm các liên kết tượng trưng lib64trong đầu ra, nhưng loại trừ các mục ẩn (có tên bắt đầu bằng dấu chấm). Nó cũng thiếu tổng kích thước cho thư mục làm việc hiện tại, vì điều đó không được thông qua như một đối số.


4
Câu trả lời hoàn hảo. Trên Mac OSX, --depththam số không được nhận dạng. Sử dụng du -h -d 1cho cùng một kết quả.
Dylan


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 các ổ đĩa không gian 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.

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.