การใช้ du.exe (Sysinternals) เป็นไปได้หรือไม่ที่จะแสดงโฟลเดอร์ที่มีขนาดเกินขนาดที่กำหนด?


4

du.exeช่วยให้คุณระบุโฟลเดอร์ซ้ำที่ใช้พื้นที่จำนวนมากซ้ำ ๆ ตัวอย่างเช่นต่อไปนี้จะแสดงขนาดของโฟลเดอร์ทั้งหมดจากc:\3 ระดับลึก:

du.exe -l 3 c:\

ฉันจะกรองเอาท์พุทนี้ให้แสดงเฉพาะโฟลเดอร์ด้านบน 1GB ได้อย่างไร

นี่เป็นส่วนหนึ่งของผลลัพธ์จากdu.exeการอ้างอิง:

Du v1.4 - report directory disk usage
Copyright (C) 2005-2011 Mark Russinovich
Sysinternals - www.sysinternals.com

   6,344,864  c:\Windows\winsxs
  18,268,671  c:\Windows
 483,343,308  c:\
Files:        412125
Directories:  42072
Size:         494,943,548,281 bytes
Size on disk: 487,560,269,896 bytes

คำตอบ:


7

ตามที่คำตอบอื่น ๆ บอกไว้คุณไม่สามารถทำได้ด้วยdu.exeตัวเอง PowerShell เพื่อช่วยเหลือ!

.\du.exe -c -l 3 C:\ | ConvertFrom-Csv -Header Size,Path | Where-Object { [int]$_.Size -gt 1048576 } | Sort-Object { [int]$_.Size } -descending

คำอธิบาย

การแบ่งคำสั่งแบบยาวนั้นลงในแต่ละบิตที่แต่ละไพพ์ไปยังอันถัดไป:

.\du.exe -c -l 3 C:\

นี่คือสิ่งที่คุณเริ่มต้นด้วยยกเว้น-cพารามิเตอร์บอกduให้จัดรูปแบบเอาต์พุตเป็น CSV

ConvertFrom-Csv -Header Size,Path

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

Where-Object { [int]$_.Size -gt 1048576 }

สิ่งนี้จะกรองข้อมูลโดยส่งกลับเฉพาะแถวที่มีขนาดมากกว่า 1 GB ( duคืนขนาดเป็น KB และ 1 GB = 1048576 KB) สังเกต[int]ส่วนหนึ่งเพื่อให้ PowerShell ทราบว่ากำลังทำงานกับข้อมูลตัวเลข

Sort-Object { [int]$_.Size } -descending

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


4

ในรุ่น du.exe ล่าสุดผนวกส่วนหัวด้วย Powershell ConvertFrom-Csv ไม่ทำงานนอกกรอบเนื่องจาก du.exe ผนวกส่วนหัวของตัวเองในรายชื่อ สิ่งที่เราต้องทำคือเลือกหัวข้อที่มีอยู่ด้วยคำสั่ง select

du.exe -c -l 3 C:\ | ConvertFrom-Csv | select Path,DirectorySize | Where-Object { [int]$_.DirectorySize -gt 1048576 }

1

ตัวเลือกนั้นไม่สามารถใช้ได้กับ DU 1.4

การใช้งาน: du [-c] [-l (ระดับ) | -n | -v] [-u] [-q] (ไดเรกทอรี)

-c พิมพ์ผลลัพธ์เป็น CSV

-l ระบุความลึกไดเรกทอรีย่อยของข้อมูล (ค่าเริ่มต้นคือทุกระดับ)

-n อย่าเรียกเก็บเงิน

-q Quiet (ไม่มีแบนเนอร์)

-u นับแต่ละอินสแตนซ์ของไฟล์ hardlinked

-v แสดงขนาด (เป็น KB) ของไดเร็กทอรีระดับกลาง

ดังนั้นการใช้ DU จึงไม่สามารถ จำกัด เอาท์พุทให้มีขนาดเฉพาะ


ยินดีที่จะรวมกับเครื่องมืออื่น ๆ ที่มีอยู่ในบรรทัดคำสั่ง
เลน

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