คำสั่ง ls: วิธีการแสดงขนาดไฟล์ในหน่วยเมกะไบต์?


161

ใน Unix (Tru64) ฉันจะทำให้lsคำสั่งแสดงขนาดไฟล์เป็นเมกะไบต์ได้อย่างไร ขณะนี้ฉันสามารถแสดงเป็นไบต์โดยใช้สิ่งต่อไปนี้:

ls -la

คำตอบ:


247

อาจ-hจะเพียงพอสำหรับคุณ:

-h
เมื่อใช้กับตัวเลือก -l ให้ใช้คำต่อท้ายหน่วย: ไบต์, กิโลไบต์, Megabyte, Gigabyte, Terabyte และ Petabyte เพื่อลดจำนวนหลักเป็นสามหรือน้อยกว่าโดยใช้ฐาน 2 สำหรับขนาด

ls -lah

คำแนะนำทั่วไป: ใช้man commandnameอ่านคู่มือ / man lsความช่วยเหลือของคำสั่งบางอย่างเช่นที่นี่


1
ขอขอบคุณ แต่ตัวเลือก -h ดูเหมือนจะไม่มีอยู่ใน Tru64 Unix

8
คำแนะนำทั่วไป: ติดตั้งโปรแกรมอรรถประโยชน์ GNU ...
reinierpost

22
ฉันชอบเคล็ดลับของคุณเกี่ยวกับการใช้คน แต่จริงๆแล้วการค้นหาใน Google นั้นเร็วกว่าการใช้คนจำนวนมาก (เช่นตอนนี้เมื่อฉันพบผลลัพธ์นี้บน Google)
trusktr

4
สิ่งที่ดีของ Google และทั้งหมดสำหรับคำแนะนำทั่วไป แต่ท้ายที่สุดแล้ว man pages คือ system / OS, แม้กระทั่ง host ที่เฉพาะเจาะจง, โดยปกติแล้วจะสร้างขึ้นเมื่อมีการคอมไพล์หรือติดตั้งซอฟต์แวร์, ดังนั้นจึงเป็นสิทธิ์สำหรับซอฟต์แวร์ในระบบของคุณ
Nevin Williams

1
เพิ่งจะครบวงจรมีคนออนไลน์สำหรับ gnu / linux: linux.die.net/man
MariusMatutiae

32

ls --block-size=Mพิมพ์ขนาดเป็นเมกะไบต์ แต่แสดง 1MB ด้วยค่าต่ำกว่า 1 MB ฉันไม่แน่ใจว่าตัวเลือกนี้เป็นที่ยอมรับใน ls เวอร์ชัน UNIX ของคุณหรือไม่

ที่จริงแล้วls -lhยังพิมพ์ขนาดเป็นกิกะไบต์หากไฟล์มีขนาดใหญ่พอ (ยังไงก็ตาม: บนLinux 64 บิตมันใช้งานได้:>)

บนโหนดด้านข้าง: du -sh *พิมพ์ขนาดไดเร็กทอรีในไดเร็กทอรีปัจจุบันด้วย


ขอบคุณ! ฉันต้องการตรวจสอบการเปลี่ยนแปลงไฟล์สดในโฟลเดอร์และการใช้งานls -hนั้นไม่มีความหมายหลังจากไฟล์มีขนาดเกิน 1GB ดังนั้นฉันจึงใช้คำสั่งนี้ในการวนซ้ำ 1 วินาที:while true ; do ls -al --block-size=M ; sleep 1 ; done
ccpizza

15

คุณจะต้องใช้awkในการทำคณิตศาสตร์สำหรับคุณ:

ls -l | awk 'BEGIN{mega=1048576} $5 >= mega {$5 = $5/mega "MB"} {print}'

megaนี้จะไม่ส่งผลกระทบต่อการส่งออกสำหรับไฟล์ที่มีขนาดเล็กกว่า

คุณอาจต้องปรับหมายเลขฟิลด์เพื่อให้ตรงกับวิธีการlsจัดวางของคุณ คุณสามารถเปลี่ยนmegaเป็น "1000000" ได้หากคุณต้องการ

นี่จะพิมพ์ทศนิยมมากกว่าที่คุณต้องการ คุณสามารถใช้ฟังก์ชั่นการปัดเศษ


3
สง่างามน้อยกว่าls -lhหรือls --block-size=Mมาก แต่ AWK มีประโยชน์มาก!
Statwonk

สิ่งที่ฉันต้องการ โซลูชันอื่น ๆ ทั้งหมดจะปัดเศษเป็น MB ที่ใกล้ที่สุด แต่จะแสดงตำแหน่งทศนิยมเพียงไม่กี่ตำแหน่ง
zeroimpl

3
นี่เป็นทางออกที่ดีสำหรับระบบเหล่านั้น (AIX - ฉันกำลังมองคุณอยู่) ซึ่งไม่มีตัวเลือก -h
Buggabill

14

ลองls -shRรูปแบบการอ่านซ้ำของมนุษย์


4
OP ระบุว่าไม่มี-hใน Tru64และทำเช่นนั้นเกินสองปีก่อนที่คำตอบนี้จะโพสต์
CVn

3
คิดว่ามันเป็นความรับผิดชอบของฉันที่จะช่วยให้ผู้ที่มาถึงที่นี่ด้วยการค้นหา google เดียวกัน
ตัวเรียงลำดับ



5

คุณยังสามารถพิมพ์

du -sh ./*

นี้จะแสดงรายการโฟลเดอร์ทั้งหมดภายใต้ไดเรกทอรีปัจจุบันด้วยรูปแบบที่มนุษย์สามารถอ่านได้รวมถึงขนาดไฟล์ที่คุ้นเคยมากขึ้นใน Kb, Mb, Gb


2

หากคุณต้องการขนาดของไฟล์เพียงไฟล์เดียวคำสั่งการคาดการณ์เล็กน้อยของคำตอบก่อนหน้าคือ:

ชื่อไฟล์ ls -sh

-sสำหรับขนาดและhสำหรับมนุษย์อ่านได้ (ดังกล่าวข้างต้นไม่กี่ครั้ง)

ผลลัพธ์จะมีลักษณะดังนี้:

753M myfilename

หากคุณปล่อยชื่อไฟล์ออกมามันจะแสดงรายการไดเรกทอรีวางขนาดของแต่ละไฟล์ถัดจากชื่อ - ไม่ต่างจากชื่อls -laเมื่อเรียกใช้โดยไม่มีอาร์กิวเมนต์ของชื่อไฟล์

หวังว่านี่จะช่วยได้


2
คำถามนี้เกี่ยวกับ Tru64 Unix และ OP ระบุเกือบห้าปีที่แล้วว่า-hไม่มีตัวเลือกในlsระบบนั้น
G-Man

2
ls -l --block-size=MB 

สำหรับ--block-sizeพารามิเตอร์:

  • ใช้MBสำหรับ 10 ^ 6
  • ใช้Mสำหรับ 2 ^ 20 เท่านั้น

โปรดทราบว่านี้จะไม่แสดงตำแหน่งทศนิยมใดนอกจากนี้สิ่งที่เหนือ 0 Kb แต่มิได้มากกว่า 1 1MBล้านบาทจะแสดงเป็น ด้วยเหตุนี้ฉันจึงพบว่าls -l --block-size=kBมีประโยชน์มากกว่า
DaAwesomeP

0

หากคุณสนใจขนาดไฟล์และคุณไม่จำเป็นต้องใช้lsคำสั่งลองทำสิ่งต่อไปนี้:

# echo "Hello World" > file.txt
# ls -l file.txt 
-rw-r--r-- 1 user user 12 Mar 10 11:32 file.txt
# stat --printf='%s\n' file.txt
12

นี่จะพิมพ์ขนาดไฟล์โดยไม่ต้องแยกวิเคราะห์อะไร


OP ต้องการขนาดเป็น MB บางทีตัวเลือกสถิติจะสร้างขนาดในรูปแบบที่มนุษย์อ่านได้?
Archemar

อานั่นเป็นใบ้ของฉัน ขอบคุณสำหรับการจับที่ สถิติไม่มีตัวเลือกในการจัดการขนาดโดยใช้ - printf หรือตัวเลือกอื่น ๆ เท่าที่ฉันรู้ อาจเป็นไปได้ว่าต้องใช้การรวมกันของยูทิลิตีบรรทัดคำสั่ง printf และ bc ในกรณีนี้ทำไมตื๊อ ls และ cut / awk จะเร็วขึ้น
SKN
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.