it-swarm-vi.com

Làm thế nào để tôi có được kích thước của một thư mục trên dòng lệnh?

Tôi đã cố gắng để có được kích thước của một thư mục (chứa các thư mục và thư mục con) bằng cách sử dụng lệnh ls với tùy chọn l. Nó dường như hoạt động cho các tập tin (ls -l file name), nhưng nếu tôi cố gắng lấy kích thước của một thư mục (ví dụ: ls -l /home), Tôi chỉ nhận được 4096 byte, mặc dù hoàn toàn lớn hơn nhiều.

1142
Abdul Al Hazred

du -sh file_path

Giải thích

  • du (d isc sage) ước tính lệnh sử dụng không gian file_path
  • Các tùy chọn -sh đến từ man du):

      -s, --summarize
             display only a total for each argument
    
      -h, --human-readable
             print sizes in human readable format (e.g., 1K 234M 2G)
    

    Để kiểm tra nhiều thư mục và xem tổng số, sử dụng du -sch:

      -c, --total
             produce a grand total
    
1585
sam

Chỉ cần sử dụng lệnh du:

du -sh -- *

sẽ cung cấp cho bạn việc sử dụng đĩa tích lũy của tất cả các thư mục không bị ẩn, các tệp vv trong thư mục hiện tại ở định dạng có thể đọc được.

Bạn có thể sử dụng lệnh df để biết không gian trống trong hệ thống tệp có chứa thư mục:

df -h .
347
Pacifist

du là bạn của bạn. Nếu bạn chỉ muốn biết tổng kích thước của một thư mục thì hãy nhảy vào đó và chạy:

du -hs

Nếu bạn cũng muốn biết thư mục con nào chiếm bao nhiêu dung lượng đĩa?! Bạn có thể mở rộng lệnh này thành:

du -h --max-depth=1 | sort -hr

sẽ cung cấp cho bạn kích thước của tất cả các thư mục con (cấp 1). Đầu ra sẽ được sắp xếp (thư mục lớn nhất trên cùng).

212
Chrispie

du có thể phức tạp để sử dụng vì bạn phải vượt qua 100 đối số để có được đầu ra tốt. Và việc tìm ra kích thước của các thư mục ẩn thậm chí còn khó khăn hơn.

Làm cho cuộc sống của bạn dễ dàng và sử dụng ncdu.

ncdu

Bạn nhận được mỗi bản tóm tắt thư mục có thể dễ dàng duyệt.

77
Teque5

Những người khác đã đề cập du, nhưng tôi cũng muốn đề cập đến Ncd - đó là phiên bản ncurses của du và cung cấp tính tương tác: Bạn có thể khám phá trực tiếp hệ thống phân cấp thư mục và xem kích cỡ của các thư mục con.

35
Tblue

Lệnh du hiển thị mức sử dụng đĩa của tệp.

Các -h tùy chọn hiển thị kết quả ở dạng có thể đọc được (ví dụ: 4k, 5M, 3G).

du -h (file name)
28
jackotonye

Tất cả các ví dụ trên sẽ cho bạn biết kích thước của dữ liệu trên đĩa (tức là dung lượng ổ đĩa mà một tệp cụ thể đang sử dụng, thường lớn hơn kích thước tệp thực tế). Có một số tình huống trong đó sẽ không cung cấp cho bạn một báo cáo chính xác, nếu dữ liệu không thực sự được lưu trữ trên đĩa cụ thể này và chỉ tồn tại các tham chiếu inode.

Trong ví dụ của bạn, bạn đã sử dụng ls -l trên một tệp duy nhất, tệp này sẽ trả về kích thước thực của tệp, KHÔNG phải kích thước của nó trên đĩa.

Nếu bạn muốn biết kích thước tệp thực tế, hãy thêm tùy chọn -b vào du.

du -csbh .
24
Andy Foster

cá nhân tôi nghĩ rằng điều này là tốt nhất, nếu bạn không muốn sử dụng ncdu

# du -sh ./*
17
ConnerMan
df -h .; du -sh -- * | sort -hr

Điều này cho thấy dung lượng đĩa bạn còn lại trên ổ đĩa hiện tại và sau đó cho bạn biết mỗi tệp/thư mục chiếm bao nhiêu. ví dụ.,

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       206G  167G   29G  86% /
115M    node_modules
2.1M    examples
68K     src
4.0K    webpack.config.js
4.0K    README.md
4.0K    package.json
16
mpen

Tôi sử dụng lệnh này làm root :

Sudo ls -1d */ | Sudo xargs -I{} du {} -sh && Sudo du -sh
10
Eduard Florinescu

tìm tất cả các tệp trong thư mục hiện tại theo cách đệ quy và tổng hợp kích thước của chúng:

find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
10
Leon Chang

Đây là một hàm cho .bash_aliases của bạn

# du with mount exclude and sort
function dusort () {
    DIR=$(echo $1 | sed 's#\/$##')
    du -scxh $(mount | awk '{print $3}' | sort | uniq \
     | sed 's#/# --  exclude=/#') $DIR/* | sort -h
}

đầu ra mẫu:

$ dusort /
...
0       /mnt  
0       /sbin
0       /srv
4,0K    /tmp
728K    /home
23M     /etc
169M    /boot  
528M    /root
1,4G    /usr
3,3G    /var
4,3G    /opt
9,6G    total

cho các thư mục con:

$ dusort .
$ dusort /var/log/
10
feldversuch

Thêm một biến thể:

du -h --max-dep=1
9
0x8BADF00D

Đâ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
ls -A -R -g -o "[email protected]" | awk '{n1 += $3} END {print n1}'
7
Steven Penny

Lưu ý rằng du in không gian mà thư mục chiếm trên phương tiện thường lớn hơn tổng kích thước của tất cả các tệp trong thư mục, vì du tính đến kích thước của tất cả thông tin phụ trợ được lưu trữ trên phương tiện truyền thông để sắp xếp thư mục tuân thủ định dạng hệ thống tệp.

Nếu hệ thống tệp có thể nén được, thì du có thể xuất số lượng nhỏ hơn tổng kích thước của tất cả các tệp, vì các tệp có thể được nén bởi hệ thống tệp và do đó chúng chiếm ít không gian trên phương tiện hơn là thông tin không nén chúng chứa. Tương tự nếu có các tệp thưa thớt.

nếu có các liên kết cứng trong thư mục, thì du cũng có thể in giá trị nhỏ hơn vì một số tệp khác nhau trong thư mục tham chiếu cùng một dữ liệu trên phương tiện truyền thông.

Để có được tổng kích thước đơn giản của tất cả các tệp trong thư mục, có thể sử dụng biểu thức Shell một dòng sau (giả sử a GNU):

find . ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc

hoặc thậm chí ngắn hơn:

find . ! -type d -printf '%s\n' | paste -sd+ - | bc

Nó chỉ tính tổng kích thước của tất cả các tệp không phải thư mục trong thư mục (và các thư mục con của nó theo cách đệ quy) từng cái một. Lưu ý rằng đối với các liên kết tượng trưng, ​​nó báo cáo kích thước của liên kết tượng trưng (không phải của tệp mà liên kết tượng trưng trỏ đến).

6
anton_rh

Bạn có thể dùng

du -sh directory/

du -sh filename

để biết không gian bị chiếm bởi thư mục hoặc tập tin.

df -h

sẽ hiển thị việc sử dụng đĩa ở định dạng có thể đọc được của con người -h làm điều đó.

Ngoài ra còn có một chương trình dựa trên gui được gọi là Disk Usage Analyzer.

6
arupgsh