ฉันจะดูขนาดของไฟล์และไดเรกทอรีใน linux ได้อย่างไร?


341

ฉันจะดูขนาดของไฟล์และไดเรกทอรีใน Linux ได้อย่างไร ถ้าใช้df -mมันจะแสดงขนาดของไดเรกทอรีทั้งหมดที่ระดับบนสุด แต่สำหรับไดเรกทอรีและไฟล์ในไดเรกทอรีฉันจะตรวจสอบขนาดได้อย่างไร

คำตอบ:


533

ใช้lsคำสั่งสำหรับไฟล์และduคำสั่งสำหรับไดเรกทอรี

ตรวจสอบขนาดไฟล์

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คำสั่งจะไม่แสดงขนาดจริงของไดเรกทอรี ( เพราะเหตุใด ) ดังนั้นเราใช้duเพื่อจุดประสงค์นี้

ตรวจสอบขนาดไดเรกทอรี

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

รวมทั้ง-hตัวเลือกในใด ๆ ของคำสั่งดังกล่าว (สำหรับ Ex: ls -lh *หรือdu -sh) จะทำให้คุณขนาดในรูปแบบการอ่านของมนุษย์ ( kb, mb, gb, ... )

สำหรับข้อมูลเพิ่มเติมดูman lsและman du


7
lsจะไม่แสดงขนาดทั้งหมดของเนื้อหาทั้งหมดของไดเรกทอรี
Maxim Egorushkin

3
@MaximYegorushkin ขอบคุณ การแก้ไข
mk ..

2
ฉันจะดูขนาดเป็นไบต์ (Mega, Giga, ... ) ได้อย่างไร
Francisco Corrales Morales

7
@FranciscoCorralesMorales ls -lh จะแสดงขนาดเป็น kb MB GB เป็นต้น
mk ..

4
โปรดทราบว่าduคำสั่งแสดงการใช้งานดิสก์ของไฟล์ซึ่งอาจใหญ่กว่าขนาดที่แท้จริงของไฟล์ คุณสามารถใช้du -dเพื่อให้ได้ขนาดที่แท้จริงเป็นlsไม่ ข้อมูลเพิ่มเติม: unix.stackexchange.com/a/106278/155224
Lucas Alonso

148

มีduคำสั่ง

ขนาดของไดเรกทอรีและ / หรือไฟล์:

$ du -sh .bashrc /tmp

--apparent-sizeสวิตช์บรรทัดคำสั่งทำให้สามารถวัดขนาดได้ชัดเจน ( lsแสดงให้เห็น) แทนที่จะใช้งานดิสก์จริง


1
ฉันจะดูขนาดเป็นไบต์ได้อย่างไร (Kilo, Mega, Giga, ... )
Francisco Corrales Morales

8
@FranciscoCorralesMorales -hflag ควรทำในสิ่งที่คุณถาม: ขนาดการพิมพ์ในรูปแบบที่มนุษย์อ่านได้ (เช่น 1K 234M 2G)
Maxim Egorushkin

3
ฉันไม่คิดว่ามันถูกต้อง สิ่งที่duไม่สามารถใช้งานดิสก์สรุปชุดของไฟล์ที่เป็นถ้าไฟล์มีขนาดเล็กมาก (เช่น 2140 bytes) การส่งออกของ "du" คือ (ในกรณีของฉัน) 4KB เพราะนั่นคือขนาดของคลัสเตอร์
mfloris

@mfloris ใช้--apparent-sizeแล้ว
Maxim Egorushkin

3
ฉันชอบที่du -hs *จะเห็นขนาดของไฟล์ทั้งหมดและไดเรกทอรีในไดเรกทอรีปัจจุบัน
Jordan Stewart

83

ใช้ls -sเพื่อแสดงรายการขนาดไฟล์หรือหากคุณต้องการls -shขนาดที่มนุษย์สามารถอ่านได้

สำหรับไดเรกทอรีใช้duและอีกครั้งdu -hสำหรับขนาดที่มนุษย์อ่านได้


7
เคล็ดลับคือการใช้; 'du -sh *' เพื่อแสดงรายการขนาดไดเรกทอรีทั้งหมด :)
Entalpi

36

คุณสามารถใช้ได้:

ls -lh

ใช้คำสั่งนี้คุณจะเห็นพื้นที่ที่ชัดเจนของไดเรกทอรีและพื้นที่ที่แท้จริงของไฟล์และในรายละเอียดชื่อของไฟล์ที่แสดงนอกเหนือจากขนาดและวันที่สร้างของแต่ละ


ls -lจะให้ขนาดไฟล์ของคุณรวมถึงข้อมูลเมตา? เนื่องจากดูเหมือนว่าจะใหญ่กว่า 4kb เล็กน้อยสำหรับหนึ่งในไฟล์ที่ฉันได้ลองด้วย
Jun711

22

ขนาดไฟล์เป็น MB

ls -l --b=M  filename | cut -d " " -f5

ขนาดไฟล์เป็น GB

ls -l --b=G  filename | cut -d " " -f5

วิธีรับสองฟิลด์เป็นเอาต์พุต
surbhiGoel

17

นอกจากนี้ยังมีncduยูทิลิตี้ที่ยอดเยี่ยม- มันสามารถแสดงขนาดไดเรกทอรีพร้อมข้อมูลรายละเอียดเกี่ยวกับโฟลเดอร์ย่อยและไฟล์

การติดตั้ง

อูบุนตู:

$ sudo apt-get install ncdu

การใช้

เพียงพิมพ์ncdu [path]ในบรรทัดคำสั่ง หลังจากสองสามวินาทีเพื่อวิเคราะห์เส้นทางคุณจะเห็นดังนี้:

$ 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

ลบองค์ประกอบที่ไฮไลต์ไว้ด้วยd, ออกด้วยCTRL+c


16

ls -l --block-size = M จะให้รายการรูปแบบยาว (คุณจำเป็นต้องดูขนาดไฟล์จริง) และขนาดไฟล์กลมจนถึง MiB ที่ใกล้ที่สุด

หากคุณต้องการหน่วย MB (10 ^ 6 ไบต์) แทนที่จะเป็น MiB (2 ^ 20 ไบต์) ให้ใช้ --block-size = MB แทน

หากคุณไม่ต้องการให้ต่อท้าย M ต่อท้ายกับขนาดไฟล์คุณสามารถใช้สิ่งที่ต้องการ --block-size = 1M ขอบคุณStéphane Chazelas ที่แนะนำสิ่งนี้

นี่คือคำอธิบายในหน้า man สำหรับ ls; man ls และค้นหา SIZE มันช่วยให้หน่วยอื่น ๆ นอกเหนือจาก MB / MiB ได้เช่นกันและจากลักษณะของมัน (ฉันไม่ได้ลอง) ขนาดบล็อกโดยพลการเช่นกัน (เพื่อให้คุณสามารถดูขนาดไฟล์เป็นจำนวนบล็อก 412 ไบต์หากคุณต้องการ ถึง).

โปรดทราบว่าพารามิเตอร์ --block-size เป็นส่วนขยายของ GNU ที่ด้านบนของ Open Group l ดังนั้นสิ่งนี้อาจไม่ทำงานหากคุณไม่มี userland GNU (ซึ่งการติดตั้ง Linux ส่วนใหญ่ทำ) ls จาก GNU coreutils 8.5 รองรับขนาดบล็อก - ตามที่อธิบายไว้ข้างต้น


13

ไปที่ไดเรกทอรีที่เลือกและดำเนินการ:

$ du -d 1 -h

ที่อยู่:

-d 1 is the depth of the directories

-h is the human-readable option

คุณจะเห็นว่า:

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

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

ที่จะทำให้คุณมีขนาดเป็นไบต์ ดูman statตัวเลือกรูปแบบผลลัพธ์เพิ่มเติม

เทียบเท่า OSX / BSDคือ:

$ 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

8

คุณสามารถใช้คำสั่งด้านล่างเพื่อรับรายการไฟล์ในรูปแบบที่มนุษย์อ่านได้ง่าย

ls -lrtsh


7

ฉันทำต่อไปนี้ตลอดเวลา:

$ du -sh backup-lr-May-02-2017-1493723588.tar.gz

หมายเหตุ:

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

5

เพื่อให้ได้ขนาดโดยรวมของไดเรกทอรีหรือขนาดโดยรวมของการใช้ไฟล์

du -csh <directory or filename*> | grep total

5

ใช้คำสั่งlsพร้อมอาร์กิวเมนต์ -h: [root @ hots19 ฯลฯ ] # ls -lh
h: เพื่อให้มนุษย์อ่านได้

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

ฉันเป็นผู้ใช้ Ubuntu 16.04 และฉันพบว่าllคำสั่งนั้นเป็นวิธีที่ง่ายที่สุดในการดูเนื้อหาของไดเรกทอรี ฉันสังเกตว่าลีนุกซ์บางรุ่นไม่รองรับคำสั่งนี้ แต่อาจมีวิธีแก้ปัญหา / ติดตั้งสำหรับแต่ละ distro out

ตัวอย่าง:

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

ข้อได้เปรียบที่ใหญ่ที่สุดสำหรับฉันคือมันใช้งานง่ายและรวดเร็ว

UPDATE: สิ่งที่ฉันไม่รู้คือบน Ubuntu มันเป็นชื่อแทนที่กำหนดค่าไว้ล่วงหน้า คุณสามารถตั้งค่าได้ด้วยตัวเองโดยดำเนินการalias ll="ls -la"บนบรรทัดคำสั่งหรือเพิ่มรายการนี้ในไฟล์. bashrc config ของคุณ:

sudo nano ~/.bashrc
...add line described above and save file by pressing Ctrl+X and Y...
source ~/.bashrc

3

du -sh [file_name]

ทำงานอย่างสมบูรณ์แบบเพื่อให้ได้ขนาดไฟล์ที่ต้องการ


3

สิ่งที่คุณต้องการคือ-lและ--block-sizeธง

ขนาดของไฟล์และไดเรกทอรีทั้งหมดภายใต้ไดเรกทอรีทำงาน (เป็น MB)

ls -l --block-size=M

ขนาดของไฟล์และไดเรกทอรีทั้งหมดภายใต้ไดเรกทอรีทำงาน (เป็น GB)

ls -l --block-size=G

ขนาดของไฟล์หรือไดเรกทอรีเฉพาะ

ls -l --block-size=M my_file.txt
ls -l --block-size=M my_dir/

ls --help

-l ใช้รูปแบบรายการแบบยาว

--block-size=SIZE: ปรับขนาดSIZEก่อนพิมพ์ เช่น '--block-size=M'พิมพ์ขนาดเป็นหน่วย 1,048,576 ไบต์ ดูSIZEรูปแบบด้านล่าง

SIZEเป็นหน่วยจำนวนเต็มและเป็นตัวเลือก (ตัวอย่าง: 10M คือ 10 * 1024 * 1024) หน่วยคือ K, M, G, T, P, E, Z, Y (พลังของ 1024) หรือ KB, MB, ... (พลังของ 1,000)



2

คุณต้อง differenciate ระหว่างขนาดไฟล์และการใช้งานดิสก์ ความแตกต่างที่สำคัญระหว่างทั้งสองนั้นมาจากความจริงที่ว่าไฟล์ถูก "ตัดเป็นชิ้น" และเก็บไว้ในบล็อก

ขนาดบล็อกทันสมัยคือ 4KiB ดังนั้นไฟล์จะใช้พื้นที่ดิสก์หลายเท่าของ 4KiB โดยไม่คำนึงว่าจะมีขนาดเล็กเพียงใด

หากคุณใช้คำสั่งstatคุณจะเห็นทั้งสองแบบเคียงข้างกัน

stat file.c

หากคุณต้องการมุมมองที่กระชับยิ่งขึ้นสำหรับไดเรกทอรีคุณสามารถใช้ls -lsซึ่งจะให้การใช้งานในหน่วย 1KiB

ls -ls dir

นอกจากนี้duจะให้การใช้งานดิสก์จริงในหน่วย1KiBหรือdutreeด้วยการ-uตั้งค่าสถานะ

ตัวอย่าง: การใช้ไฟล์ 1 ไบต์

$ 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: -

นอกจากนี้ในระบบไฟล์ที่ทันสมัยเราสามารถมีสแนปชอต, ไฟล์แบบกระจาย (ไฟล์ที่มีช่องว่าง ) ซึ่งจะทำให้สถานการณ์ซับซ้อนยิ่งขึ้น

คุณสามารถดูรายละเอียดเพิ่มเติมในบทความนี้: ทำความเข้าใจกับขนาดไฟล์ใน Linux


1

คุณสามารถใช้ ls -sh ใน linux คุณสามารถเรียงลำดับและคุณต้องไปที่ dir ที่คุณต้องการตรวจสอบขนาดของไฟล์


1

ไปที่ไดเรกทอรีเฉพาะแล้วเรียกใช้คำสั่งด้านล่าง

# 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

คุณสามารถใช้ncduตัววิเคราะห์การใช้ดิสก์ได้ที่นี่ มันแสดงขนาดของไฟล์และไดเรกทอรีในอินเทอร์เฟซ ncurses คุณสามารถนำทางไปยังแต่ละไดเรกทอรีและดูขนาดไฟล์จากอินเทอร์เฟซเดียวกัน

ติดตั้ง

$ sudo apt-get install ncdu

วิเคราะห์

$ ncdu <directory>

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.