Câu hỏi Sử dụng ls để liệt kê các thư mục và tổng kích thước của chúng


Có thể sử dụng không ls trong Unix để liệt kê tổng kích thước của một thư mục con và tất cả nội dung của nó như trái ngược với 4K thông thường mà (tôi giả định) chỉ là tập tin thư mục? I E.

total 12K
drwxrwxr-x  6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk

Sau khi cọ rửa những trang người đàn ông tôi đang trống rỗng.


622
2018-06-19 17:29


gốc


bạn muốn sử dụng du -s thay vào đó - guns
Tìm kiếm vịt: alias ducks='du -cksh * | sort -hr | head -n 15' - Sebi


Các câu trả lời:


Hãy thử một cái gì đó như:

du -sh *

phiên bản ngắn của:

du --summary --human-readable *

Giải trình:

du: Disk UHiền nhân

-s: Hiển thị tóm tắt cho từng tệp được chỉ định. (Tương đương với -d 0)

-h: Đầu ra "Con người có thể đọc được". Sử dụng hậu tố đơn vị: Byte, Kibibyte (KiB), Mebibyte (MiB), Gibibyte (GiB), Tebibyte (TiB) và Pebibyte (PiB). (BASE2)


1172
2018-06-19 17:30



+1 ... du dành cho nhiệm vụ, ls thì không. - David Z
du -h (người có thể đọc được!) là bạn của bạn ở đây. - DrLou
Ngoài ra -c (sản xuất một tổng số lớn) là tốt đẹp. - meridius
du - max-depth 1 chỉ hiển thị kích thước tập tin / thư mục của 1 sâu trong cây, không lộn xộn hơn và dễ dàng tìm thấy các thư mục lớn trong một thư mục. - CousinCocaine
làm thế nào để bao gồm các tập tin ẩn quá? - Zakaria Braksa


du -sk * | sort -n sẽ sắp xếp các thư mục theo kích thước. Hữu ích khi tìm cách xóa không gian ..


255
2018-04-09 08:50



Nối thêm | tail -r để sắp xếp theo thứ tự lớn nhất trước tiên. - Phrogz
sort -rn sắp xếp mọi thứ theo thứ tự số ngược lại. sort -rn | head -n 10 sẽ chỉ hiển thị số ít nhất, nếu đó là bất kỳ sự quan tâm nào. - AgileTillIDie
sort -rh sẽ hoạt động tốt với du -cksh * vì nó sắp xếp các đơn vị có thể đọc được. - Sebi
@Sebi -h không phải là thông số hợp lệ để sắp xếp trên máy Mac - anon58192932
@ Sebi cũng -c là không cần thiết, du -ksh | sort -rn giống như du -cksh | sort -rn. Cũng như du -ksh giống như du -cksh. - hello_there_andy


du -sh * | sort -h

Điều này sẽ được hiển thị ở định dạng có thể đọc được của con người.


76
2017-11-08 17:16



Thông tin thêm về sort -h đây: gnu.org/software/coreutils/manual/… Nó đặc biệt có để phân loại 103K, 102M, 1.1G vv Điều này sẽ có sẵn trên rất nhiều hệ thống hiện nay, nhưng không phải tất cả. - Evgeni Sergeev
duh -shm * | sắp xếp -n? - std''OrgnlDave
hoạt động tốt, một bổ sung nhỏ du -sh * | sort -rh (-r để liệt kê các thư mục lớn hơn trước) - artm


Để liệt kê các thư mục lớn nhất từ ​​thư mục hiện tại ở định dạng có thể đọc được của con người:

du -sh * | sort -hr

Một cách tốt hơn để hạn chế số hàng có thể là

du -sh * | sort -hr | head -n10

Nơi bạn có thể tăng hậu tố của -n để hạn chế số hàng được liệt kê

Mẫu vật:

[~]$ du -sh * | sort -hr
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

Nó làm cho nó thuận tiện hơn để đọc :)


23
2017-08-16 22:36





Để hiển thị nó trong ls -lh định dạng, sử dụng:

(du -sh ./*; ls -lh --color=no) | awk '{ if($1 == "total") {X = 1} else if (!X) {SIZES[$2] = $1} else { sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0); print $0} }'

Mã awk được giải thích:

if($1 == "total") { // Set X when start of ls is detected
  X = 1 
} else if (!X) { // Until X is set, collect the sizes from `du`
  SIZES[$2] = $1
} else {
  // Replace the size on current current line (with alignment)
  sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0); 
  print $0
}

Đầu ra mẫu:

drwxr-xr-x 2 root     root 4.0K    Feb 12 16:43 cgi-bin
drwxrws--- 6 root     www  20M     Feb 18 11:07 document_root
drwxr-xr-x 3 root     root 1.3M    Feb 18 00:18 icons
drwxrwsr-x 2 localusr www  8.0K    Dec 27 01:23 passwd

21
2018-02-18 11:38



bất kỳ cách nào để sắp xếp đầu ra này? Ngoài ra đối với bất kỳ ai trên mac, công trình này sẽ xuất sắc nếu bạn xóa --color=no - anon58192932
@ anon58192932 Bạn có thể dẫn đầu ra sort --key=5,5h để phân loại 'các đơn vị có thể đọc được con người' từ cột thứ năm - Sebi
trả về sort: stray character in field spec: invalid field specification 5,5h'`. Tôi thực sự ghét mac đôi khi = \ - anon58192932
@ anon58192932 Bạn có thể đặt câu hỏi liên quan đến mac, tôi chắc chắn có ai đó có thể trợ giúp. Câu hỏi này được gắn thẻ là GNU /linux - Sebi
có cách nào để bảo quản màu sắc bằng câu trả lời này không? - Pablo Canseco


Lệnh bạn muốn là 'du -sk' du = "sử dụng đĩa"

Cờ -k cung cấp cho bạn đầu ra bằng kilobyte, thay vì mặc định của các phần đĩa (khối 512 byte).

Cờ -s sẽ chỉ liệt kê những thứ trong thư mục cấp cao nhất (tức là thư mục hiện tại, theo mặc định hoặc thư mục được chỉ định trên dòng lệnh). Đó là kỳ lạ mà du có hành vi ngược lại của ls trong vấn đề này. Theo mặc định du sẽ đệ quy cung cấp cho bạn việc sử dụng đĩa của mỗi thư mục con. Ngược lại, ls sẽ chỉ cung cấp các tệp danh sách trong thư mục được chỉ định. (ls-R cho bạn hành vi đệ quy.)


20
2018-06-22 21:29



Đã thử điều này trên thư mục gốc, nó vẫn cố gắng liệt kê các thư mục con, dẫn đến rất nhiều thư. - Nagev


Đặt khai báo hàm shell này trong các kịch bản khởi tạo shell của bạn:

function duls {
    paste <( du -hs -- "$@" | cut -f1 ) <( ls -ld -- "$@" )
}

Tôi đã gọi nó duls bởi vì nó cho thấy đầu ra từ cả hai du và ls (theo thứ tự đó):

$ duls
210M    drwxr-xr-x  21 kk  staff  714 Jun 15 09:32 .

$ duls *
 36K    -rw-r--r--   1 kk  staff    35147 Jun  9 16:03 COPYING
8.0K    -rw-r--r--   1 kk  staff     6962 Jun  9 16:03 INSTALL
 28K    -rw-r--r--   1 kk  staff    24816 Jun 10 13:26 Makefile
4.0K    -rw-r--r--   1 kk  staff       75 Jun  9 16:03 Makefile.am
 24K    -rw-r--r--   1 kk  staff    24473 Jun 10 13:26 Makefile.in
4.0K    -rw-r--r--   1 kk  staff     1689 Jun  9 16:03 README
120K    -rw-r--r--   1 kk  staff   121585 Jun 10 13:26 aclocal.m4
684K    drwxr-xr-x   7 kk  staff      238 Jun 10 13:26 autom4te.cache
128K    drwxr-xr-x   8 kk  staff      272 Jun  9 16:03 build
 60K    -rw-r--r--   1 kk  staff    60083 Jun 10 13:26 config.log
 36K    -rwxr-xr-x   1 kk  staff    34716 Jun 10 13:26 config.status
264K    -rwxr-xr-x   1 kk  staff   266637 Jun 10 13:26 configure
8.0K    -rw-r--r--   1 kk  staff     4280 Jun 10 13:25 configure.ac
7.0M    drwxr-xr-x   8 kk  staff      272 Jun 10 13:26 doc
2.3M    drwxr-xr-x  28 kk  staff      952 Jun 10 13:26 examples
6.2M    -rw-r--r--   1 kk  staff  6505797 Jun 15 09:32 mrbayes-3.2.7-dev.tar.gz
 11M    drwxr-xr-x  42 kk  staff     1428 Jun 10 13:26 src

$ duls doc
7.0M    drwxr-xr-x  8 kk  staff  272 Jun 10 13:26 doc

$ duls [bM]*
 28K    -rw-r--r--  1 kk  staff  24816 Jun 10 13:26 Makefile
4.0K    -rw-r--r--  1 kk  staff     75 Jun  9 16:03 Makefile.am
 24K    -rw-r--r--  1 kk  staff  24473 Jun 10 13:26 Makefile.in
128K    drwxr-xr-x  8 kk  staff    272 Jun  9 16:03 build

Giải trình:

Các paste tiện ích tạo cột từ đầu vào của nó theo đặc tả mà bạn đưa ra. Cho hai tệp đầu vào, nó đặt chúng cạnh nhau, với một tab là dấu tách.

Chúng tôi cung cấp cho nó đầu ra của du -hs -- "$@" | cut -f1 là tệp đầu tiên (luồng đầu vào thực sự) và đầu ra của ls -ld -- "$@" dưới dạng tệp thứ hai.

Trong hàm, "$@" sẽ đánh giá danh sách tất cả các đối số dòng lệnh, mỗi đối số trong dấu ngoặc kép. Do đó, nó sẽ hiểu rõ các ký tự và tên đường dẫn với khoảng trắng, v.v.

Các minuses kép (--) báo hiệu sự kết thúc của các tùy chọn dòng lệnh đến du và ls. Không có những thứ này, hãy nói duls -l sẽ gây nhầm lẫn du và bất kỳ tùy chọn nào cho du cái đó ls không bị nhầm lẫn ls (và các tùy chọn tồn tại trong cả hai tiện ích có thể không có nghĩa là cùng một điều, và nó sẽ là một mess khá).

Các cut sau du chỉ cần cắt bỏ cột đầu tiên của du -hsđầu ra (kích thước).

Tôi quyết định đặt du đầu ra bên trái, nếu không tôi sẽ phải quản lý một cột bên phải (do độ dài khác nhau của tên tệp).

Lệnh sẽ không chấp nhận cờ dòng lệnh.

Điều này đã được thử nghiệm ở cả hai bash và trong ksh93. Nó sẽ không hoạt động với /bin/sh.


7
2018-06-25 20:42



Thật tuyệt. Quyền và kích thước trên một dòng - Ben


Tôi luôn sử dụng du -sk (-k thay vào đó, hãy hiển thị kích thước tệp bằng kilobyte).


6
2018-06-19 17:31



đây phải là nhận xét, cung cấp thông tin bổ sung cho câu trả lời được chấp nhận chính xác và tốt hơn bởi @molf. Nó không nên được coi là một câu trả lời trên riêng của nó - code_monk


du -h --max-depth=1 . | sort -n -r

6
2017-07-22 00:59



du -h -d 1 cho độ sâu tối đa 1. Biểu mẫu ngắn. - possumkeys