Làm cách nào tôi có thể thấy kích thước của tệp và thư mục trong Linux? Nếu sử dụng df -m
, nó sẽ hiển thị kích thước của tất cả các thư mục ở cấp cao nhất, nhưng, đối với các thư mục và tệp trong thư mục, làm cách nào để kiểm tra kích thước?
Làm cách nào tôi có thể thấy kích thước của tệp và thư mục trong Linux? Nếu sử dụng df -m
, nó sẽ hiển thị kích thước của tất cả các thư mục ở cấp cao nhất, nhưng, đối với các thư mục và tệp trong thư mục, làm cách nào để kiểm tra kích thước?
Câu trả lời:
Sử dụng ls
lệnh cho các tập tin và du
lệnh cho các thư mục.
Kiểm tra kích thước tập tin
ls -l filename #Displays Size of the specified file
ls -l * #Displays Size of All the files in the current directory
ls -al * #Displays Size of All the files including hidden files in the current directory
ls -al dir/ #Displays Size of All the files including hidden files in the 'dir' directory
ls
lệnh sẽ không liệt kê kích thước thực tế của các thư mục ( tại sao? ). Do đó, chúng tôi sử dụng du
cho mục đích này.
Kiểm tra kích thước thư mục
du -sh directory_name #Gives you the summarized(-s) size of the directory in human readable(-h) format
du -bsh * #Gives you the apparent(-b) summarized(-s) size of all the files and directories in the current directory in human readable(-h) format
Bao gồm -h
tùy chọn trong bất kỳ các lệnh trên (đối với Ex: ls -lh *
hoặc du -sh
) sẽ cung cấp cho bạn kích thước ở định dạng có thể đọc được con người ( kb
, mb
, gb
, ...)
Để biết thêm thông tin xem man ls
vàman du
du
lệnh hiển thị mức sử dụng đĩa của tệp, có thể lớn hơn kích thước thực của tệp. Bạn có thể sử dụng du -d
để có được kích thước thực tế như ls
. Thông tin thêm: unix.stackexchange.com/a/106278/155224
Có du
lệnh.
Kích thước của một thư mục và / hoặc tập tin:
$ du -sh .bashrc /tmp
--apparent-size
chuyển đổi dòng lệnh làm cho nó đo kích thước rõ ràng (những gì ls
hiển thị) thay vì sử dụng đĩa thực tế.
-h
Cờ @FranciscoCorralesMorales nên làm những gì bạn yêu cầu: kích thước in ở định dạng có thể đọc được của con người (ví dụ: 1K 234M 2G)
du
làm là tổng sử dụng đĩa của bộ các tập tin , đó là nếu một tập tin là rất nhỏ (tức là 2140 bytes) đầu ra của "du" là (trong trường hợp của tôi) 4KB bởi vì đó là kích thước của cụm
--apparent-size
rồi.
du -hs *
xem kích thước của tất cả các tệp và thư mục trong thư mục hiện tại.
Sử dụng ls -s
để liệt kê kích thước tệp hoặc nếu bạn thích ls -sh
kích thước có thể đọc được của con người.
Đối với thư mục sử dụng du
, và một lần nữa, du -h
cho kích thước có thể đọc được của con người.
Bạn có thể dùng:
ls -lh
Sử dụng lệnh này, bạn sẽ thấy không gian rõ ràng của thư mục và không gian thực của các tệp và chi tiết tên của các tệp được hiển thị, bên cạnh kích thước và ngày tạo của mỗi tệp.
ls -l
sẽ cho kích thước tập tin u bao gồm siêu dữ liệu? vì nó dường như lớn hơn một chút 4kb cho một tệp mà tôi đã thử với
Kích thước tệp tính bằng MB
ls -l --b=M filename | cut -d " " -f5
Kích thước tệp tính bằng GB
ls -l --b=G filename | cut -d " " -f5
Ngoài ra còn có một ncdu
tiện ích tuyệt vời - nó có thể hiển thị kích thước thư mục với thông tin chi tiết về các thư mục con và tệp.
Ubuntu:
$ sudo apt-get install ncdu
Chỉ cần gõ ncdu [path]
vào dòng lệnh. Sau vài giây để phân tích đường dẫn, bạn sẽ thấy một cái gì đó như thế này:
$ ncdu 1.11 ~ Use the arrow keys to navigate, press ? for help
--- / ---------------------------------------------------------
. 96,1 GiB [##########] /home
. 17,7 GiB [# ] /usr
. 4,5 GiB [ ] /var
1,1 GiB [ ] /lib
732,1 MiB [ ] /opt
. 275,6 MiB [ ] /boot
198,0 MiB [ ] /storage
. 153,5 MiB [ ] /run
. 16,6 MiB [ ] /etc
13,5 MiB [ ] /bin
11,3 MiB [ ] /sbin
. 8,8 MiB [ ] /tmp
. 2,2 MiB [ ] /dev
! 16,0 KiB [ ] /lost+found
8,0 KiB [ ] /media
8,0 KiB [ ] /snap
4,0 KiB [ ] /lib64
e 4,0 KiB [ ] /srv
! 4,0 KiB [ ] /root
e 4,0 KiB [ ] /mnt
e 4,0 KiB [ ] /cdrom
. 0,0 B [ ] /proc
. 0,0 B [ ] /sys
@ 0,0 B [ ] initrd.img.old
@ 0,0 B [ ] initrd.img
@ 0,0 B [ ] vmlinuz.old
@ 0,0 B [ ] vmlinuz
Xóa phần tử hiện được tô sáng bằng d, thoát bằng CTRL+c
ls -l --block-size = M sẽ cung cấp cho bạn một danh sách định dạng dài (cần thiết để thực sự thấy kích thước tệp) và kích thước tệp tròn lên đến MiB gần nhất.
Nếu bạn muốn các đơn vị MB (10 ^ 6 byte) thay vì đơn vị MiB (2 ^ 20 byte), thay vào đó, hãy sử dụng --block-size = MB.
Nếu bạn không muốn hậu tố M được gắn vào kích thước tệp, bạn có thể sử dụng cái gì đó như --block-size = 1M. Cảm ơn Stéphane Chazelas đã gợi ý điều này.
Điều này được mô tả trong trang man cho ls; người đàn ông ls và tìm kiếm KÍCH THƯỚC. Nó cũng cho phép các đơn vị khác ngoài MB / MiB và từ ngoại hình của nó (tôi cũng không thử) kích thước khối tùy ý (vì vậy bạn có thể thấy kích thước tệp là số khối 412 byte, nếu bạn muốn đến).
Lưu ý rằng tham số --block-size là phần mở rộng GNU ở trên ls của Open Group, vì vậy điều này có thể không hoạt động nếu bạn không có vùng người dùng GNU (điều mà hầu hết các cài đặt Linux làm). Các ls từ GNU coreutils 8.5 không hỗ trợ - kích thước chặn như mô tả ở trên.
Chuyển đến thư mục đã chọn và thực hiện:
$ du -d 1 -h
Ở đâu:
-d 1 is the depth of the directories
-h is the human-readable option
Bạn sẽ thấy như thế:
0 ./proc
8.5M ./run
0 ./sys
56M ./etc
12G ./root
33G ./var
23M ./tmp
3.2G ./usr
154M ./boot
26G ./home
0 ./media
0 ./mnt
421M ./opt
0 ./srv
2.6G ./backups
80G .
Nếu bạn đang sử dụng nó trong một kịch bản, sử dụng stat
.
$ date | tee /tmp/foo
Wed Mar 13 05:36:31 UTC 2019
$ stat -c %s /tmp/foo
29
$ ls -l /tmp/foo
-rw-r--r-- 1 bruno wheel 29 Mar 13 05:36 /tmp/foo
Điều đó sẽ cung cấp cho bạn kích thước theo byte. Xem man stat
để biết thêm các tùy chọn định dạng đầu ra.
Các OSX / BSD tương đương là:
$ date | tee /tmp/foo
Wed Mar 13 00:54:16 EDT 2019
$ stat -f %z /tmp/foo
29
$ ls -l /tmp/foo
-rw-r--r-- 1 bruno wheel 29 Mar 13 00:54 /tmp/foo
Tôi làm như sau mọi lúc:
$ du -sh backup-lr-May-02-2017-1493723588.tar.gz
Lưu ý:
-s, --summarize
display only a total for each argument
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
Để có được tổng kích thước của thư mục hoặc tổng kích thước sử dụng tệp,
du -csh <directory or filename*> | grep total
Sử dụng lệnh ls với đối số -h: [root @ hots19 vv] # ls -lh
h: để con người có thể đọc được.
Exemple:
[root@CIEYY1Z3 etc]# ls -lh
total 1.4M
-rw-r--r--. 1 root root 44M Sep 15 2015 adjtime
-rw-r--r--. 1 root root 1.5K Jun 7 2013 aliases
-rw-r--r-- 1 root root 12K Nov 25 2015 aliases.db
drwxr-xr-x. 2 root root 4.0K Jan 11 2018 alternatives
-rw-------. 1 root root 541 Jul 8 2014 anacrontab
-rw-r--r--. 1 root root 55M Sep 16 2014 asound.conf
-rw-r--r--. 1 root root 1G Oct 6 2014 at.deny
Bản thân tôi là người dùng Ubuntu 16.04 và tôi thấy rằng ll
lệnh này là cách dễ nhất để xem nội dung của thư mục. Tôi đã nhận thấy rằng không phải tất cả các bản phân phối Linux đều hỗ trợ lệnh này, nhưng có lẽ có một cách giải quyết / cài đặt cho mỗi bản phân phối ngoài kia.
Thí dụ:
user@user-XPS-15-9560:/$ ll
total 188
drwxr-xr-x 27 root root 4096 Jan 26 09:13 ./
drwxr-xr-x 27 root root 4096 Jan 26 09:13 ../
drwxr-xr-x 2 root root 4096 Jan 22 15:13 bin/
drwxr-xr-x 4 root root 12288 Jan 29 11:35 boot/
drwxr-xr-x 2 root root 4096 Sep 3 18:14 cdrom/
drwxr-xr-x 20 root root 4440 Feb 5 08:43 dev/
drwxr-xr-x 153 root root 12288 Feb 2 15:17 etc/
drwxr-xr-x 4 root root 4096 Sep 3 18:15 home/
...
Ưu điểm lớn nhất đối với tôi là nó nhanh và thực sự trực quan để sử dụng.
CẬP NHẬT: điều tôi không biết là trên Ubuntu đó là bí danh được cấu hình sẵn. Bạn có thể dễ dàng tự thiết lập nó bằng cách thực hiện alias ll="ls -la"
trên dòng lệnh hoặc bằng cách thêm mục này vào tệp cấu hình .bashrc của bạn:
sudo nano ~/.bashrc
...add line described above and save file by pressing Ctrl+X and Y...
source ~/.bashrc
du -sh [file_name]
hoạt động hoàn hảo để có được kích thước của một tập tin cụ thể.
Tất cả bạn cần là -l
và --block-size
cờ
Kích thước của tất cả các tệp và thư mục trong thư mục làm việc (tính bằng MB)
ls -l --block-size=M
Kích thước của tất cả các tệp và thư mục trong thư mục làm việc (tính bằng GB)
ls -l --block-size=G
Kích thước của một tập tin hoặc thư mục cụ thể
ls -l --block-size=M my_file.txt
ls -l --block-size=M my_dir/
ls --help
-l
sử dụng một định dạng danh sách dài
--block-size=SIZE
: kích thước tỷ lệ bằng cáchSIZE
trước khi in chúng; ví dụ:'--block-size=M'
in kích thước theo đơn vị 1.048.576 byte; xemSIZE
định dạng dưới đây
SIZE
là một số nguyên và đơn vị tùy chọn (ví dụ: 10M là 10 * 1024 * 1024). Đơn vị là K, M, G, T, P, E, Z, Y (lũy thừa 1024) hoặc KB, MB, ... (lũy thừa 1000).
Bạn phải phân biệt giữa kích thước tệp và mức sử dụng đĩa . Sự khác biệt chính giữa cả hai xuất phát từ thực tế là các tệp được "cắt thành từng mảnh" và được lưu trữ trong các khối.
Kích thước khối hiện đại là 4KiB, vì vậy các tệp sẽ sử dụng nhiều dung lượng đĩa của 4KiB, bất kể chúng nhỏ như thế nào.
Nếu bạn sử dụng lệnh, stat
bạn có thể thấy cả hai hình bên cạnh nhau.
stat file.c
Nếu bạn muốn một chế độ xem nhỏ gọn hơn cho một thư mục, bạn có thể sử dụng ls -ls
, nó sẽ cung cấp cho bạn cách sử dụng theo đơn vị 1KiB.
ls -ls dir
Cũng du
sẽ cung cấp cho bạn mức sử dụng đĩa thực, theo đơn vị 1KiB hoặc dutree với -u
cờ.
Ví dụ: sử dụng tệp 1 byte
$ echo "" > file.c
$ ls -l file.c
-rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c
$ ls -ls file.c
4 -rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c
$ du file.c
4 file.c
$ dutree file.c
[ file.c 1 B ]
$ dutree -u file.c
[ file.c 4.00 KiB ]
$ stat file.c
File: file.c
Size: 1 Blocks: 8 IO Block: 4096 regular file
Device: 2fh/47d Inode: 2185244 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ nacho) Gid: ( 1000/ nacho)
Access: 2018-04-30 20:41:58.002124411 +0200
Modify: 2018-04-30 20:42:24.835458383 +0200
Change: 2018-04-30 20:42:24.835458383 +0200
Birth: -
Ngoài ra, trong các hệ thống tệp hiện đại, chúng ta có thể có các ảnh chụp nhanh, các tệp thưa thớt (các tệp có lỗ hổng ) làm phức tạp thêm tình hình.
Bạn có thể xem thêm chi tiết trong bài viết này: hiểu kích thước tệp trong Linux
ls
sẽ không hiển thị cho bạn tổng kích thước của tất cả nội dung của một thư mục.