Làm thế nào để tìm đệ quy số tiền được lưu trữ trong thư mục?


136

Tôi biết bạn có thể thấy kích thước byte của tệp khi bạn thực hiện một danh sách dài với llhoặc ls -l. Nhưng tôi muốn biết có bao nhiêu dung lượng trong một thư mục bao gồm các tệp trong thư mục đó và các thư mục con trong đó, v.v. Tôi không muốn số lượng tệp, mà thay vào đó là dung lượng lưu trữ mà các tệp đó chiếm.

Vì vậy, tôi muốn biết có bao nhiêu lưu trữ trong một thư mục nhất định đệ quy? Tôi đoán, nếu có một lệnh, nó sẽ được tính bằng byte.

Câu trả lời:


146

Hãy thử làm điều này:

du -s dir

hoặc là

du -sh dir

cần -hhỗ trợ, phụ thuộc vào hệ điều hành của bạn.

Xem

man du

2
thêm -bvào đầu ra theo byte
pcnate 17/03/2016

4
--all liệt kê tất cả các tệp và -h hiển thị kích thước tệp ở định dạng có thể đọc được du -h --all
Praneeth

29

Bạn chỉ cần làm:

du -sh /path/to/directory

trong đó -stóm tắt-hcho con người có thể đọc được ( tùy chọn không chuẩn ).

Tuy nhiên, hãy cẩn thận , không giống như lsđiều này sẽ không hiển thị cho bạn kích thước tệp mà là mức sử dụng đĩa (tức là nhiều kích thước khối hệ thống tệp), nhưng tệp có thể nhỏ hơn hoặc thậm chí lớn hơn, vì vậy bạn có thể sử dụng --apparent-sizetùy chọn:

du -sh --apparent-size /path/to/directory

Đây là kích thước sẽ được chuyển qua mạng nếu bạn phải.

Thật vậy, tệp có thể có "lỗ hổng" trong nó (vỏ trống), có thể nhỏ hơn kích thước khối hệ thống tệp, có thể được nén ở cấp hệ thống tệp, v.v. Trang man giải thích điều này.

Như Nicklas chỉ ra , bạn cũng có thể sử ncdudụng bộ phân tích sử dụng đĩa. Khởi chạy từ trong một thư mục, nó sẽ cho bạn thấy các thư mục và tệp nào sử dụng dung lượng đĩa bằng cách sắp xếp chúng từ lớn nhất đến nhỏ nhất.

Bạn có thể thấy câu hỏi này là tốt.


19

Lưu ý rằng nếu bạn muốn biết tất cả kích thước thư mục {sub} bên trong một thư mục, bạn cũng có thể sử dụng tùy chọn -dhoặc (lấy một đối số: giới hạn đệ quy)--max-depthdu

Ví dụ :

du -h /path/to/directory -d 1

Sẽ cho bạn thấy một cái gì đó như

4.0K /path/to/directory/folder1
16M  /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M  /path/to/directory/folder4
8G   /path/to/directory/folder5

PS: Nhập 0làm giới hạn đệ quy tương đương với -stùy chọn. Hai lệnh này sẽ cho bạn cùng một kết quả (thư mục đã cho của bạn đệ quy kích thước có thể đọc được của con người):

du -h /path/to/directory -d 0
du -sh /path/to/directory

-d 1cần phải ở trước đường dẫn thư mục
Abhinav Singi

Nhu cầu? Nó hoạt động với tôi sau đường dẫn thư mục, trên ubfox / debian. Mặc dù vậy nó vẫn đẹp hơn, tôi đồng ý
Flo Schild

14

Một thay thế cho đã đề cập dulệnh sẽ ncdulà một phân tích sử dụng đĩa thoải mái để sử dụng trong thiết bị đầu cuối. Bạn có thể cần phải cài đặt nó trước, nhưng nó có sẵn trong hầu hết các kho lưu trữ gói.

Chỉnh sửa: Đối với định dạng đầu ra, xem các ảnh chụp màn hình này http://dev.yorhel.nl/ncdu/scr


Phép màu! Với điều này, tôi có thể thấy những thư mục nào đang chứa dung lượng lưu trữ lớn. Tôi thậm chí còn tìm thấy tất cả các tập tin của tôi đã biến mất một cách bí ẩn. Công cụ tuyệt vời đó là.
Faron

11

Điều này sẽ cung cấp cho bạn một danh sách các kích thước từ thư mục hiện tại, bao gồm các thư mục (đệ quy) và các tệp.

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt

3
để đặt hàng theo kích thước: du -hs * | sắp xếp -hs
Kaiser

3

Trong Unix, một thư mục chỉ chứa tên và tham chiếu đến các đối tượng hệ thống tệp (inodes, có thể tham chiếu đến thư mục, tệp hoặc một số thứ kỳ lạ khác). Một tệp có thể xuất hiện dưới một vài tên trong cùng thư mục hoặc được liệt kê trong một số thư mục. Vì vậy, "không gian được sử dụng bởi thư mục và các tệp bên trong" thực sự không có ý nghĩa gì, vì các tệp không "bên trong".

Điều đó nói rằng, lệnh du(1)liệt kê không gian được sử dụng bởi một thư mục và tất cả những gì có thể truy cập thông qua nó, du -sđưa ra một bản tóm tắt, với -hmột số triển khai như GNU ducho đầu ra "con người có thể đọc được" (ví dụ, kilobyte, megabyte).


1

Đối với tôi, nó hoạt động ngược trong trường hợp độ sâu và đường dẫn trên OS X El Capitán

du -h -d 1 /path/to/directory

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.