จะค้นหาจำนวนที่เก็บไว้ในไดเรกทอรีแบบวนซ้ำได้อย่างไร?


136

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

ดังนั้นฉันต้องการที่จะรู้ว่าปริมาณการจัดเก็บอยู่ในไดเรกทอรีบางอย่างซ้ำ? ฉันเดาถ้ามีคำสั่งว่ามันจะเป็นไบต์

คำตอบ:


146

ลองทำสิ่งนี้:

du -s dir

หรือ

du -sh dir

ต้องการ-hการสนับสนุนขึ้นอยู่กับระบบปฏิบัติการของคุณ

ดู

man du

2
เพิ่ม-bในผลลัพธ์เป็นไบต์
pcnate

4
- แสดงรายการไฟล์ทั้งหมดและ -h แสดงขนาดไฟล์ในรูปแบบที่มนุษย์สามารถอ่านได้ du -h
Praneeth

29

คุณเพิ่งทำ:

du -sh /path/to/directory

ที่-sเป็นบทสรุปและ-hสำหรับคนอ่าน ( ที่ไม่ได้มาตรฐานตัวเลือก)

แต่ระวังไม่เหมือนกันlsซึ่งจะไม่แสดงขนาดไฟล์ของคุณแต่เป็นการใช้งานดิสก์ (เช่นขนาดบล็อกระบบไฟล์หลาย ๆ ไฟล์) แต่ไฟล์อาจเล็กกว่าหรือใหญ่กว่าดังนั้นคุณสามารถใช้--apparent-sizeตัวเลือก:

du -sh --apparent-size /path/to/directory

นี่คือขนาดที่จะถ่ายโอนผ่านเครือข่ายหากคุณต้องการ

อันที่จริงไฟล์อาจมี "ช่อง" ในนั้น (เชลล์ว่าง) อาจมีขนาดเล็กกว่าขนาดบล็อกของระบบไฟล์อาจถูกบีบอัดในระดับระบบไฟล์ ฯลฯ หน้า man อธิบายสิ่งนี้

ดังที่Nicklas ชี้ให้เห็นคุณอาจใช้ncduเครื่องมือวิเคราะห์การใช้ดิสก์ เปิดตัวจากภายในไดเรกทอรีมันจะแสดงให้คุณเห็นว่าโฟลเดอร์และไฟล์ใดบ้างที่ใช้พื้นที่ดิสก์โดยการสั่งให้ใหญ่ที่สุดไปหาน้อยที่สุด

คุณสามารถเห็นคำถามนี้เช่นกัน


19

โปรดทราบว่าหากคุณต้องการทราบขนาดโฟลเดอร์ {sub} ทั้งหมดภายในไดเรกทอรีคุณยังสามารถใช้-dหรือ--max-depthตัวเลือกของdu(ซึ่งรับอาร์กิวเมนต์: ขีด จำกัด แบบเรียกซ้ำ)

ตัวอย่างเช่น

du -h /path/to/directory -d 1

จะแสดงให้คุณเห็นเช่น

4.0K /path/to/directory/folder1
16M  /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M  /path/to/directory/folder4
8G   /path/to/directory/folder5

PS: การป้อน0เป็นขีด จำกัด แบบเรียกซ้ำนั้นเทียบเท่ากับ-sตัวเลือก คำสั่ง 2 คำสั่งเหล่านั้นจะให้ผลลัพธ์แบบเดียวกัน (ไดเรกทอรีที่คุณกำหนดให้สามารถอ่านซ้ำได้ขนาดมนุษย์):

du -h /path/to/directory -d 0
du -sh /path/to/directory

-d 1ต้องอยู่ก่อนเส้นทางไดเรกทอรี
Abhinav Singi

ความต้องการของคุณ มันใช้งานได้สำหรับฉันหลังจากเส้นทางไดเรกทอรีบน ubuntu / debian แม้ว่าจะมีมาก่อนฉันยอมรับ
Flo Schild

14

ทางเลือกอื่นสำหรับduคำสั่งที่กล่าวถึงแล้วจะncduเป็นตัววิเคราะห์การใช้ดิสก์ที่ดีสำหรับใช้ในเทอร์มินัล คุณอาจต้องติดตั้งก่อน แต่มีให้ในที่เก็บแพ็คเกจส่วนใหญ่

แก้ไข: สำหรับรูปแบบผลลัพธ์ดูภาพหน้าจอเหล่านี้ http://dev.yorhel.nl/ncdu/scr


มิราเคิล! ด้วยวิธีนี้ฉันสามารถดูว่าโฟลเดอร์ใดที่มีพื้นที่เก็บข้อมูลขนาดดิสก์สูง ฉันยังพบไฟล์ทั้งหมดที่หายไปอย่างลึกลับ เครื่องมือที่ยอดเยี่ยมมันเป็น
Faron

11

นี่จะให้รายการขนาดจากไดเรกทอรีปัจจุบันรวมถึงโฟลเดอร์ (แบบเรียกซ้ำ) และไฟล์

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt

3
การสั่งซื้อตามขนาด: du -hs * | sort -hs
Kaiser

3

ใน Unix ไดเรกทอรีจะมีชื่อและการอ้างอิงไปยังวัตถุระบบไฟล์ (inodes ซึ่งสามารถอ้างถึงไดเรกทอรีไฟล์หรือสิ่งแปลกใหม่อื่น ๆ ) ไฟล์สามารถปรากฏภายใต้ชื่อต่าง ๆ ในไดเรกทอรีเดียวกันหรือแสดงอยู่ในหลายไดเรกทอรี ดังนั้น "พื้นที่ใช้งานโดยไดเรกทอรีและไฟล์ภายใน" ไม่สมเหตุสมผลเพราะไฟล์ไม่ได้ "อยู่ใน"

ที่กล่าวว่าคำสั่งdu(1)รายการพื้นที่ที่ใช้โดยไดเรกทอรีและสิ่งที่เข้าถึงได้ผ่านมันdu -sให้สรุปกับ-hการใช้งานบางอย่างเช่น GNU duให้เอาท์พุท "มนุษย์อ่าน" (เช่นกิโลไบต์เมกะไบต์)


1

สำหรับฉันมันทำงานย้อนหลังในกรณีของความลึกและเส้นทางใน OS X El Capitán

du -h -d 1 /path/to/directory

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