lệnh du không phân tích các thư mục ẩn


25

Tôi muốn ước tính dung lượng đĩa được sử dụng bởi một thư mục bằng lệnh sau.

du -sh dir_name

mà không tính toán các thư mục ẩn. Trong trang man của du không có thông tin liên quan đến nó. Cách tính dung lượng ổ đĩa được sử dụng bởi các thư mục bao gồm các tệp ẩn.

Câu trả lời:


13

Trên thực tế, đây là bằng chứng:

mkdir .test
echo "hi" > .test/appo
du -a
4       ./.test/appo
8       ./.test
12      .

Các -atùy chọn được sử dụng để hiển thị một cách rõ ràng mà các file được tính.

Bạn đang sử dụng du *?


3
+1 cho... you maybe using "du *" ?
sehe

2
Tôi không sử dụng "du *". Tôi quên đề cập đến trong câu hỏi rằng tôi cần tóm tắt tóm tắt. vì vậy nếu tôi sử dụng cả hai -a và -s như trong du -as, tôi nhận được thông báo lỗi có nội dung "du: không thể tóm tắt và hiển thị tất cả các mục". Đây là một vấn đề. Một điều khác là tôi thậm chí với du -ai chỉ được xem các tệp cấp đầu tiên. tức là không thể nhìn thấy các tập tin bên trong các thư mục ẩn.
Talespin_Kit

1
Tôi vừa thêm -a để hiển thị tất cả các tệp đang được tính, chỉ cần không thêm cờ đó, nó chỉ ảnh hưởng đến màn hình chứ không ảnh hưởng đến tổng số. Tôi đã cho bạn thấy một ví dụ ngược lại mà thay vào đó các thư mục ẩn được tính.
stivlo

1
bây giờ tôi tìm thấy vấn đề. Vấn đề là thư mục ẩn là một liên kết tượng trưng, ​​vì vậy tôi phải sử dụng "du -Lsh dir_name". Cảm ơn.
Talespin_Kit

1
ah, tôi hiểu rồi, rất vui vì bạn đã tìm thấy nó, chúc mừng.
stivlo

53

Lệnh này cho bạn thấy kích thước tóm tắt của các thư mục ẩn

du -hs .[^.]*


1
Đây chính xác là những gì tôi đang tìm kiếm, cảm ơn :)
Nikana Reklawyks 7/12/2016

đây là giải pháp chính xác
3pns

Sẽ thật tuyệt vời nếu bạn có thể giải thích một chút ma thuật đằng sau nó. nó sẽ giúp hình thành một câu trả lời bao gồm cả các tập tin và thư mục ẩn và không ẩn.
kumetix

13

Lệnh đúng là: du -hs $(ls -A)

$ du -hs $(ls -A)
0   test
0   .test

du -hs .* *, như đã đề cập trong câu trả lời khác, không chính xác nếu bạn muốn liệt kê tất cả các tệp và thư mục con (bao gồm cả các tệp ẩn).

Thí dụ :

$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K    .
1,8G    ..

Tại sao lại ducư xử như vậy? Bởi vì bạn sử dụng -stóm tắt kết quả đó và tất cả các tệp và thư mục con là con của .nên du -hskhông liệt kê chúng!


11

FYI, để ước tính kích thước chiếm bởi các thư mục khác nhau, sử dụng ncdu tốt hơn nhiều

Bạn có thể điều hướng trong GUI ncurses giữa các thư mục khác nhau và nó sẽ hiển thị kích thước của mỗi thư mục. Nếu tôi đang sử dụng du, tôi sẽ phải thực thi lệnh du cho mỗi thư mục mà tôi muốn kiểm tra xem cái nào có thể cồng kềnh. Bạn có thể sắp xếp các thư mục theo kích thước chiếm quá trong GUI của ncurses.


1
Vui lòng chỉnh sửa câu trả lời của bạn để cho biết lý do tại sao bạn tin rằng ncdu là "tốt hơn nhiều". Trang được liên kết không thực sự nói bất cứ điều gì về nó ngoài phiên bản dựa trên ncurses du. Ngoài phương pháp hiển thị fancier, không có dấu hiệu rõ ràng về sự khác biệt chức năng.
Dave Sherohman

Tôi nghĩ rằng khả năng tự động điều chỉnh truy vấn của bạn là một lợi ích rất lớn. Tôi có thể chạy ncdu trên ~, tìm hiểu thư mục nào đang sử dụng nhiều dung lượng nhất và sau đó đi thẳng vào đó. Nó cũng cung cấp cho bạn các dràng buộc để xóa các thư mục, vì vậy bạn có thể dọn sạch trực tiếp khỏi giao diện.
dùng88974

5

Nó làm và nó không. Thí dụ:

Trong thư mục chính: (chỉ có một người dùng tồn tại)

du -sh /home/*
2.6G    /home/user

trong thư mục người dùng: (sự khác biệt lớn giữa các khoản tiền)

du -sh *
61M     bin
2.0M    dump-20130124104823.tar.gz
651M    public_html
472K    twitter-2.0.0.gem
11M     wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

và lý do là:

du -sh /home/user/.rvm/
1.9G    /home/user/.rvm/

du sẽ tính toán các thư mục ẩn trong khi giảm dần vào các thư mục con, nhưng trong thư mục hiện tại, * đơn giản là không khớp với mẫu .directory_name nên các phần tử ẩn của thư mục hiện tại sẽ bị bỏ qua.

Tôi phải mất một thời gian để tìm hiểu, và như shadyabhi khuyên rằng điều đó là hiển nhiên nếu tôi đã sử dụng ncdu.


1

Lệnh đúng là: du -hs .* *


Một số thông tin bổ sung sẽ làm cho điều này một câu trả lời chấp nhận được.
Ramhound

1

find -maxdepth 1 -exec du -sh "{}" \; | sort -h

Điều này mang lại cho bạn:

  • Kích thước của tập tin / thư mục ẩn
  • Kích thước của tập tin / thư mục không bị ẩn
  • Tổng kích thước của thư mục hiện tại

Nó cũng sắp xếp đầu ra để dễ dàng xem cái gì là lớn nhất. Tôi cũng biến điều này thành bí danh trong ~/.bash_aliasestập tin của mình .

alias big='find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
alias sbig='sudo find -maxdepth 1 -exec du -sh "{}" \; | sort -h'

Bây giờ tôi chỉ có thể thực thi bigđể tìm các thư mục lớn nhất trong một thư mục và sbigkhi tôi cần quyền sudo.


0
du -ahd1 | sort -hr | head -10

sau đây là mô tả của -dtùy chọn trong du --help:

-d, --max-height = N in tổng số cho một thư mục (hoặc tệp, với --all) chỉ khi nó ở mức N hoặc ít hơn bên dưới đối số dòng lệnh; --max-height = 0 giống như --summarize


Mặc dù điều này có thể giúp giải quyết vấn đề, nhưng nó không giải thích được tại sao và / hoặc cách giải quyết vấn đề. Cung cấp bối cảnh bổ sung này sẽ cải thiện đáng kể giá trị giáo dục lâu dài của nó. Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích, bao gồm những hạn chế và giả định được áp dụng. Cảm ơn.
fixer1234

0

Lệnh này sẽ giúp bạn kiểm tra việc sử dụng đĩa vào thư mục và thực hiện như sau.
"du -sch. [!.] * * | sort -h"

Dưới đây là bản demo về cách tính toán mức sử dụng đĩa của một thư mục cụ thể. Tôi đã tạo một thư mục có tên Du_sh và tạo hai tệp (một ẩn 10 MB và 20 MB bình thường) bên trong.

nikhil@debian:~$ mkdir Du_sh nikhil@debian:~$ cd Du_sh/ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=.10MB bs=1024 count=10240 10240+0 records in 10240+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0299941 s, 350 MB/s nikhil@debian:~/Du_sh$ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=20MB bs=2048 count=10240 10240+0 records in 10240+0 records out 20971520 bytes (21 MB, 20 MiB) copied, 0.0342258 s, 613 MB/s nikhil@debian:~/Du_sh$ du -sch .[!.]* * 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$ du -sch .[!.]* * | sort -h 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$

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.