Làm thế nào tôi có thể thấy kích thước của các tập tin và thư mục trong linux?


340

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:


532

Sử dụng lslệnh cho các tập tin và dulệ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

lslệ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 ducho 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 -htù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 lsman du


7
lssẽ 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.
Maxim Egorushkin

3
@MaximYegorushkin Cảm ơn bạn. Đã sửa.
mk ..

2
Làm cách nào tôi có thể thấy kích thước tính bằng byte (Mega, Giga, ...)?
Francisco Corrales Morales

7
@FranciscoCorralesMorales ls -lh sẽ cho bạn thấy kích thước tính bằng kb MB GB, v.v.
mk ..

4
lưu ý rằng dulệ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
Lucas Alonso

147

dulệnh.

Kích thước của một thư mục và / hoặc tập tin:

$ du -sh .bashrc /tmp

--apparent-sizechuyển đổi dòng lệnh làm cho nó đo kích thước rõ ràng (những gì lshiển thị) thay vì sử dụng đĩa thực tế.


1
Làm cách nào tôi có thể thấy kích thước tính bằng byte (Kilo, Mega, Giga, ...)?
Francisco Corrales Morales

8
-hCờ @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)
Maxim Egorushkin

3
Tôi không nghĩ rằng điều này là đúng. Có gì dulà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
mfloris

@mfloris Dùng --apparent-sizerồi.
Maxim Egorushkin

3
Tôi muốn 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.
Jordan Stewart

82

Sử dụng ls -sđể liệt kê kích thước tệp hoặc nếu bạn thích ls -shkí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 -hcho kích thước có thể đọc được của con người.


7
Một mẹo là sử dụng; 'du -sh *' để liệt kê tất cả các kích cỡ thư mục. :)
Entalpi

35

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 -lsẽ 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
Jun711

22

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

Làm thế nào để có được hai lĩnh vực như đầu ra?
surbhiGoel

17

Ngoài ra còn có một ncdutiệ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.

Cài đặt

Ubuntu:

$ sudo apt-get install ncdu

Sử dụng

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


15

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.


13

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 .

9

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

7

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)

7

Bạn có thể sử dụng lệnh dưới đây để lấy danh sách các tệp ở định dạng dễ đọc của con người.

ls -lrtsh


5

Để 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

5

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

4

Bản thân tôi là người dùng Ubuntu 16.04 và tôi thấy rằng lllệ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

3

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ể.


1
Điều này cho thấy đầu ra bằng bit hoặc byte?
Embedded_Mugs

3

Tất cả bạn cần là -l--block-sizecờ

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ách SIZEtrước khi in chúng; ví dụ: '--block-size=M'in kích thước theo đơn vị 1.048.576 byte; xem SIZEđịnh dạng dưới đây

SIZElà 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).



2

Bạn phải phân biệt giữa kích thước tệpmứ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, statbạ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 dusẽ cung cấp cho bạn mức sử dụng đĩa thực, theo đơn vị 1KiB hoặc dutree với -ucờ.

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


1

bạn có thể sử dụng ls -sh trong linux, bạn cũng có thể sắp xếp bạn cần vào dir nơi bạn muốn kiểm tra kích thước của tệp


1

đi đến thư mục cụ thể sau đó chạy bên dưới lệnh

# du -sh * 

4.0K    1
4.0K    anadb.sh --> Shell file
4.0K    db.sh/    --> shell file
24K     backup4/  --> Directory
8.0K    backup6/  --> Directory 
1.9G    backup.sql.gz  --> sql file

0

Bạn có thể sử ncdudụng phân tích sử dụng đĩa ở đây. Nó hiển thị kích thước của các tập tin và thư mục trong giao diện ncurses. Bạn có thể điều hướng đến từng thư mục và xem kích thước tệp từ cùng một giao diện.

Để cài đặt

$ sudo apt-get install ncdu

Để phân tích

$ ncdu <directory>

nhập mô tả hình ảnh ở đây

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.