ฉันจะทำให้ `ls 'แสดงขนาดไฟล์เป็นเมกะไบต์ได้อย่างไร


คำตอบ:


513

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

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

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

หากคุณต้องการขนาดไฟล์ในหน่วย "สมเหตุสมผล" แทนที่จะเป็นเมกะไบต์โดยเฉพาะคุณสามารถใช้-lhเพื่อรับรายการรูปแบบยาวและนำเสนอขนาดไฟล์ที่มนุษย์สามารถอ่านได้ นี้จะใช้หน่วยขนาดไฟล์เพื่อให้ขนาดของแฟ้มที่นำเสนอด้วยประมาณ 1-3 ตัวเลข (ดังนั้นคุณจะเห็นขนาดไฟล์เช่น6.1K, 151K, 7.1M, 15M, 1.5Gและอื่น ๆ

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

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


11
ความแตกต่างที่ควรสังเกต: --block-size=Mทำให้Mส่วนต่อท้ายแสดงขึ้นถัดจากขนาดและคุณสามารถใช้--block-size=1Mเพื่อละเว้นมันได้ มันอาจจะคุ้มค่าที่จะกล่าวถึงเช่นกันว่าคุณต้องการ GNU ls สำหรับสิ่งนั้น (ระบบ Linux ส่วนใหญ่ที่ไม่ได้ฝังตัวจะมี GNU ls)
Stéphane Chazelas

2
นี่จะเป็น GNU lsหรือไม่ มาตรฐานlsไม่มีข้อโต้แย้งดังกล่าว ด้วยการขยาย xsi lsมี-sธงซึ่งทำให้รายงานจำนวนบล็อก --block-sizeแต่ไม่มีธงมาตรฐาน
kojiro

2
@kojiro GNU ls มี--block-sizecoreutils 8.5 ซึ่งเป็นสิ่งที่ติดตั้งบนระบบ Debian Squeeze ของฉัน เนื่องจากคำถามนั้นชัดเจนสำหรับ Linux และไม่ได้ระบุสิ่งอื่นใดฉันจะยอมรับว่าผู้ใช้มีศูนย์กลางอยู่ที่แกนกลางของ GNU ฉันได้ปรับปรุงคำตอบเพื่อชี้แจงนี้ (นอกจาก Open Group ls ก็ไม่ได้มี -h เช่นกัน:))
CVN

2
@EmanuelBerg, 1,000 ^ 7 (10 ^ 21) มากกว่า 2 ^ 64 (ซึ่งคือ ~ 10 ^ 19.27)
Stéphane Chazelas

4
@ Tom ตามที่กล่าวไว้ในวรรคสุดท้ายของคำตอบ--block-sizeคือส่วนขยาย GNU ฉันสงสัยว่า Mac OS X ไม่ได้ใช้ lsGNU
CVn

384

ls -lh ให้ขนาดไฟล์ที่มนุษย์สามารถอ่านได้รูปแบบยาว

มันใช้ k, M, G, และ T ต่อท้าย (หรือต่อท้ายไบต์ไม่ได้) ตามความจำเป็นดังนั้นจำนวนอยู่เล็ก ๆ เช่นหรือ1.4K178M

-h เป็นส่วนขยาย coreutils ของ GNU ไม่ใช่ POSIX พื้นฐาน

โปรดทราบว่าสิ่งนี้จะไม่ตอบคำถามตามที่ถาม หากคุณต้องการขนาดอย่างเคร่งครัดในเอ็มไอแม้สำหรับไฟล์ขนาดเล็กหรือขนาดใหญ่คำตอบที่ไมเคิลKjörlingของไม่ว่าสำหรับ lscoreutils


4
ที่จะพิมพ์ขนาดไฟล์เป็น GB สำหรับทุกอย่างที่ใหญ่กว่าเพียงแค่ 1.0 GiB (ฉันเชื่อ)
CVN

5
@ MichaelKjörlingฉันไม่เห็นว่ามันเป็นคำตอบที่ไม่ดี (แม้ว่าฉันจะไม่ได้โหวต) บางครั้ง OP ไม่ได้ตอบคำถามอย่างที่ควรจะเป็นไปได้ว่าพวกเขาต้องการแค่เอาท์พุทที่มนุษย์สามารถอ่านได้และแทนที่คำว่า "เป็น MB"
Dason

5
upvoted "นี่ไม่ได้ตอบคำถาม (MB)" เป็นคำสั่งที่ถูกต้องสมบูรณ์แบบ แต่คำตอบนี้เพิ่มประโยชน์ของหน้า SO นี้เท่านั้นเนื่องจากคำตอบนี้อยู่ในบริบทเดียวกัน ฉันมาที่หน้านี้เพื่อหาวิธีแก้ปัญหาความต้องการ "แสดงวันที่ในรูปแบบที่มนุษย์อ่านได้" และhเขียนง่ายกว่า--block-size=M
Ejaz

6
"มนุษย์อ่านได้" เป็นเรื่องน่าขัน ใครใช้ls -lเลยถ้าไม่ใช่มนุษย์? : p
Blauhirn

2
@ เฉิ่นหยาง: การแยกวิเคราะห์ls -lผลลัพธ์เป็นวิธีที่ผิดในการทำสิ่งต่าง ๆ 99% ของเวลา unix.stackexchange.com/questions/128985/why-not-parse-ls นั่นคือ 1% ที่ใจดีและ จำกัด อยู่แค่เพียงหนึ่ง liners ที่คุณเขียนด้วยการโต้ตอบสำหรับการใช้งานครั้งเดียวไม่ใช่สคริปต์ที่คุณจะใช้ซ้ำ ๆ ในชื่อไฟล์ที่ไม่รู้จัก
Peter Cordes

45

ls -lhS จัดเรียงตามขนาดในรูปแบบที่มนุษย์อ่านได้


2
โปรดดูความคิดเห็นเกี่ยวกับls -lhคำตอบด้วยเหตุผลว่าทำไมสิ่งนี้ไม่ตอบคำถาม
Alexander Batischev

2
สิ่งนี้ไม่เพียง แต่จะไม่ตอบคำถาม (ตามที่กล่าวไว้ในความคิดเห็นต่อคำตอบของ Sirex) แต่มันก็ไม่ได้เพิ่มอะไรที่เกี่ยวข้องกับคำตอบที่มีอยู่: OP ไม่ได้ถามเกี่ยวกับการเรียงลำดับ
CVn

6
แค่คิดว่าการเรียงลำดับตามขนาดเป็นคนที่มีศักยภาพในการติดตามอาจมีอย่างน้อยนั่นคือสิ่งที่ฉันมี
jaciefan

1
ในกรณีนั้นผู้ใช้ควรดูที่วิธีแสดงรายการไฟล์ทั้งหมดที่เรียงลำดับตามขนาดซึ่งเกี่ยวข้องกับสถานการณ์นั้น
CVn

ฉันเชื่อว่านี่จะเป็นการเพิ่มเติมที่คุ้มค่ากับคำตอบโดยเฉพาะอย่างยิ่งเมื่ออธิบายรายละเอียดของคำตอบ
Sirex

9

และนี่คือตัวเลือกสำหรับการแสดงรายการทุกอย่างในลำดับไดเรกทอรีโดยขนาดไฟล์ (ยังคงเป็นที่มนุษย์อ่านได้) จากน้อยไปมาก

ls -lSrh

คุณคิดว่าความคิดเห็นจากคำตอบอื่นที่ไม่ตอบคำถามนำไปใช้กับคำตอบนี้ด้วยหรือไม่
Dan Dascalescu

@DanDascalescu ไม่ความคิดเห็นเหล่านั้นไม่เป็นประโยชน์คำตอบสำหรับคำถาม 2 ข้อคือ เพียงแค่ 2 เซ็นต์ของฉันในฐานะที่แฮ็คพยายามหาวิธีแสดงขนาดไฟล์ในระบบ linux ที่เขาไม่รู้อะไรเลย
Dowlers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.