ฉันจะดูขนาดของไฟล์และไดเรกทอรีใน Linux ได้อย่างไร ถ้าใช้df -m
มันจะแสดงขนาดของไดเรกทอรีทั้งหมดที่ระดับบนสุด แต่สำหรับไดเรกทอรีและไฟล์ในไดเรกทอรีฉันจะตรวจสอบขนาดได้อย่างไร
ฉันจะดูขนาดของไฟล์และไดเรกทอรีใน Linux ได้อย่างไร ถ้าใช้df -m
มันจะแสดงขนาดของไดเรกทอรีทั้งหมดที่ระดับบนสุด แต่สำหรับไดเรกทอรีและไฟล์ในไดเรกทอรีฉันจะตรวจสอบขนาดได้อย่างไร
คำตอบ:
ใช้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
du
คำสั่งแสดงการใช้งานดิสก์ของไฟล์ซึ่งอาจใหญ่กว่าขนาดที่แท้จริงของไฟล์ คุณสามารถใช้du -d
เพื่อให้ได้ขนาดที่แท้จริงเป็นls
ไม่ ข้อมูลเพิ่มเติม: unix.stackexchange.com/a/106278/155224
มีdu
คำสั่ง
ขนาดของไดเรกทอรีและ / หรือไฟล์:
$ du -sh .bashrc /tmp
--apparent-size
สวิตช์บรรทัดคำสั่งทำให้สามารถวัดขนาดได้ชัดเจน ( ls
แสดงให้เห็น) แทนที่จะใช้งานดิสก์จริง
-h
flag ควรทำในสิ่งที่คุณถาม: ขนาดการพิมพ์ในรูปแบบที่มนุษย์อ่านได้ (เช่น 1K 234M 2G)
du
ไม่สามารถใช้งานดิสก์สรุปชุดของไฟล์ที่เป็นถ้าไฟล์มีขนาดเล็กมาก (เช่น 2140 bytes) การส่งออกของ "du" คือ (ในกรณีของฉัน) 4KB เพราะนั่นคือขนาดของคลัสเตอร์
--apparent-size
แล้ว
du -hs *
จะเห็นขนาดของไฟล์ทั้งหมดและไดเรกทอรีในไดเรกทอรีปัจจุบัน
ใช้ls -s
เพื่อแสดงรายการขนาดไฟล์หรือหากคุณต้องการls -sh
ขนาดที่มนุษย์สามารถอ่านได้
สำหรับไดเรกทอรีใช้du
และอีกครั้งdu -h
สำหรับขนาดที่มนุษย์อ่านได้
คุณสามารถใช้ได้:
ls -lh
ใช้คำสั่งนี้คุณจะเห็นพื้นที่ที่ชัดเจนของไดเรกทอรีและพื้นที่ที่แท้จริงของไฟล์และในรายละเอียดชื่อของไฟล์ที่แสดงนอกเหนือจากขนาดและวันที่สร้างของแต่ละ
ls -l
จะให้ขนาดไฟล์ของคุณรวมถึงข้อมูลเมตา? เนื่องจากดูเหมือนว่าจะใหญ่กว่า 4kb เล็กน้อยสำหรับหนึ่งในไฟล์ที่ฉันได้ลองด้วย
ขนาดไฟล์เป็น MB
ls -l --b=M filename | cut -d " " -f5
ขนาดไฟล์เป็น GB
ls -l --b=G filename | cut -d " " -f5
นอกจากนี้ยังมี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
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 รองรับขนาดบล็อก - ตามที่อธิบายไว้ข้างต้น
ไปที่ไดเรกทอรีที่เลือกและดำเนินการ:
$ 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 .
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
ตัวเลือกรูปแบบผลลัพธ์เพิ่มเติม
$ 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
คุณสามารถใช้คำสั่งด้านล่างเพื่อรับรายการไฟล์ในรูปแบบที่มนุษย์อ่านได้ง่าย
ls -lrtsh
ฉันทำต่อไปนี้ตลอดเวลา:
$ 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)
เพื่อให้ได้ขนาดโดยรวมของไดเรกทอรีหรือขนาดโดยรวมของการใช้ไฟล์
du -csh <directory or filename*> | grep total
ใช้คำสั่ง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
ฉันเป็นผู้ใช้ 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
du -sh [file_name]
ทำงานอย่างสมบูรณ์แบบเพื่อให้ได้ขนาดไฟล์ที่ต้องการ
สิ่งที่คุณต้องการคือ-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)
คุณต้อง 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
คุณสามารถใช้ ls -sh ใน linux คุณสามารถเรียงลำดับและคุณต้องไปที่ dir ที่คุณต้องการตรวจสอบขนาดของไฟล์
ไปที่ไดเรกทอรีเฉพาะแล้วเรียกใช้คำสั่งด้านล่าง
# 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
คุณสามารถใช้ncdu
ตัววิเคราะห์การใช้ดิสก์ได้ที่นี่ มันแสดงขนาดของไฟล์และไดเรกทอรีในอินเทอร์เฟซ ncurses คุณสามารถนำทางไปยังแต่ละไดเรกทอรีและดูขนาดไฟล์จากอินเทอร์เฟซเดียวกัน
ติดตั้ง
$ sudo apt-get install ncdu
วิเคราะห์
$ ncdu <directory>
ls
จะไม่แสดงขนาดทั้งหมดของเนื้อหาทั้งหมดของไดเรกทอรี