Große Dateien finden mit PowerShell

    Wenn der Speicherplatz auf einer Festplatte knapp wird, dann möchte man wahrscheinlich wissen, ob einige dicke Brocken dafür verantwortlich sind und ob man auf den einen oder anderen davon verzichten kann, um wieder Platz zu schaffen. Für diese Aufgabe gibt es einige kostenlose Tools, aber dank PowerShell kann man sich ihre Installation sparen.

    Ausgangspunkt für den benötigten PowerShell-Befehl ist Get-ChildItem, mit dessen Hilfe man Dateien und Verzeichnisse auflisten kann. Für eine Aufgabe wie das Finden der größten Dateien wird man das Resultat des Cmdlets nicht direkt ausgeben, sondern durch weitere Filter schicken, in denen die Daten sortiert und die gewünschten Eigenschaften gezielt extrahiert werden:

    gci -r|sort -descending -property length| select -first 10 name, length

    Möchte man ganze Verzeichnisbäume untersuchen, dann setzt man Get-ChildItem (alias gci) rekursiv ein, dafür ist der Schalter -r zuständig. Die Collection von FileInfo-Objekten sortiert man danach absteigend anhand der Eigenschaft length (sort als Alias für Sort-Object) und greift sich schließlich mit Select-Object (Alias select) die 10 ersten Einträge heraus, deren Name und Größe man anzeigt.

    Ausgabe der Dateigröße in GB

    Das Ergebnis hat noch den kleinen Schönheitsfehler, dass die Größe der Dateien in Bytes angegeben wird. Gerade bei mehreren GB großen Klöpsen ist das unübersichtlich und führt zu sehr großen Zahlen. Hier kann man sich behelfen, indem man die entsprechende Eigenschaft selbst berechnet:

    gci -r|sort -descending -property length| select -first 10 name, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 2)}}

    Anstatt die Eigenschaft length unbearbeitet auszugeben, rechnet man die Dateigröße mit einer Calculated Property in GB um. Die zahlreichen Nachkommastellen lassen sich schließlich noch mit der round-Funktion auf 2 reduzieren.

    Keine Kommentare