Frage Mit du.exe (Sysinternals) können Ordner über einer bestimmten Größe angezeigt werden?


du.exe Ermöglicht die rekursive Erkennung von Ordnern, die viel Speicherplatz belegen. Im Folgenden sehen Sie beispielsweise die Größe aller Ordner von c:\ 3 Ebenen tief:

du.exe -l 3 c:\

Wie kann ich diese Ausgabe filtern, um nur die Ordner über 1GB anzuzeigen?

Hier ist ein Auszug der Ausgabe von du.exe als Referenz:

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

4
2018-05-05 16:58


Ursprung




Antworten:


Wie die andere Antwort sagt, können Sie es nicht tun du.exe allein. PowerShell zur Rettung!

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

Erläuterung

Den langen Befehl in die einzelnen Bits zerlegen, die jeweils in den nächsten übergeben werden:

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

Dies ist im Grunde, was Sie angefangen haben, außer der -c Parameter sagt du um die Ausgabe als CSV zu formatieren.

ConvertFrom-Csv -Header Size,Path

Dies nimmt die CSV-Ausgabe von du und konvertiert es in eine PowerShell-Hashtabelle. Schon seit du bietet keinen Header mit Spaltennamen, der manuell gemacht werden muss.

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

Dies filtert die Daten und gibt nur die Zeilen zurück, deren Größe größer als 1 GB ist (du gibt die Größe in KB und 1 GB = 1048576 KB zurück). Beachten Sie das [int] Teil, damit PowerShell weiß, dass es sich um numerische Daten handelt.

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

Dadurch werden die Daten in absteigender Reihenfolge nach Größe sortiert (wobei wiederum angegeben wird, dass die zu sortierenden Daten numerisch sind). Dies ist natürlich optional.


7
2018-05-05 17:49





In der neuesten du.exe-Version funktioniert das Anhängen eines Headers mit Powershell ConvertFrom-Csv nicht sofort, da du.exe einen eigenen Header in der Auflistung anfügt. Was wir tun müssen, ist die Auswahl der vorhandenen Kopfzeile mit dem Befehl select.

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

4
2017-07-01 19:22





Diese Option ist mit DU 1.4 nicht verfügbar

Verwendung: du [-c] [-l (Ebenen) | -n | -v] [-u] [-q] (Verzeichnis)

-c Druckausgabe als CSV.

-l Angabe der Informationstiefe des Unterverzeichnisses (standardmäßig alle Ebenen).

-n Wiederhole nicht.

-q Leise (kein Banner).

-u Zählt jede Instanz einer Hardlink-Datei.

-v Zeigt die Größe (in KB) von Zwischenverzeichnissen an.

Wenn Sie also nur DU verwenden, können Sie die Ausgabe nicht auf eine bestimmte Größe beschränken.


1
2018-05-05 17:15



Gerne mit anderen Tools auf der Kommandozeile kombinieren. - Iain
Dann gehst du. Indrek hat die Antwort, die Sie wollen. Ich habe es +1 gegeben. - Bon Gart