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.
du -sh file_path
Giải thích
du
(d isc sage) ước tính lệnh sử dụng không gian file_pathCá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
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 .
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).
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.
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)
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 .
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 ./*
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
Tôi sử dụng lệnh này làm root :
Sudo ls -1d */ | Sudo xargs -I{} du {} -sh && Sudo du -sh
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}'
Đâ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/
Thêm một biến thể:
du -h --max-dep=1
Đây là tập lệnh POSIX sẽ hoạt động với:
ls -A -R -g -o "[email protected]" | awk '{n1 += $3} END {print n1}'
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).
Bạn có thể dùng
du -sh directory/
và
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
.