Große Dateien finden mit PowerShell

    Große Dateien finden mit PowerShellWenn der Speicher­platz auf einem Lauf­werk knapp wird, dann möchte man wahr­scheinlich wissen, ob einige dicke Brocken dafür verant­wortlich sind, auf die man even­tuell ver­zichten kann. Für diese Auf­gabe gibt es einige kosten­lose Tools, aber dank Power­Shell kann man sich ihre Instal­lation 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