Große Dateien finden unter Linux
Da ich oft unter Platzmangel auf meiner Platte leide wollte ich mal alle “großen” Dateien finden und gegebenenfalls löschen.
Der Befehl
ls -lahS $(find / -type f -size +100000k)
findet alle Dateien die größer sind als 100MByte und listet sie der Größe nach auf.
Dabei sorgt der Befehl ls -lahS für das Auflisten der Dateien. Die Dateien werden mit l im langen Format ausgegeben.
Der Parameter a zeigt alle Dateien, auch die versteckten. Dank h erscheinen alle Größenangaben in gut lesbarem Format.
AdsSpy: 2 sites by this AdSense ID
Mit $ wird das Ergebnis des nachfolgenden Befehls als Parameter an ls übergeben. Sprich, es erscheinen nur Dateien, die größer sind als 100.000 Kilobyte.
Hinweis: Wenn Sie den Befehl nicht als root ausführen, werden Sie einige Male Permission denied zu lesen bekommen.



Kommentare (8)
1
Stefan Blechschmidt
schrieb am 16. Dezember 2009 um 11:07 Uhr:
Nicht schlecht der Befehl aber birgt noch einige Probleme.
Mit dem /proc/ Verzeichnis hat find seine Probleme hier ist eine Umleitung des Fehlerkanals sicher sinnvoll.
Wenn find Namen mit Leerzeichen findet übergibt er 2 Parameter an ls und dann kann ls nichts mehr damit anfangen. „No such file or directory“
Besser wäre es den in find eingebauten Prozess -exec zu verwenden. Zwar geht dann die Sortierung verloren, weil find für jeden Fund einen ls Prozess startet, aber diese kannst du dir dann mit sort wieder einbauen.
find / -type f -size +100000k -exec ls -lah {} \; 2>/dev/null | sort -r -k5Und wenn man ehrlich ist braucht man die Ausgabe der Rechte und des Benutzers auch nicht. Also würde ich den Befehl am Ende so schreiben
find / -type f -size +100000k -exec ls -sah {} \; 2>/dev/null | sort -r -k1Gruß stefan
2
Hammer Man
schrieb am 8. Juni 2010 um 13:11 Uhr:
du -sk * | sort -k 1n,1
so einfach ist das
3
Stefan Bleschschmidt
schrieb am 12. September 2010 um 02:10 Uhr:
@Hammer Man
das kann ich nicht auf mich sitzen lassen, denn so einfach ist das nicht wie du schreibst.
Was macht denn dein Befehl. Er sortiert eine Zusammenfassung der Unterverzeichnisse in dem du den Befehl ausführst.
Beschrieben wird aber ein Befehl der auf der Festplatte Dateien sucht die eine bestimmte Größe überschreitet und diese Ausgabe dann sortiert ausgibt.
Thema verfehlt, setzen, sechs.
4
Klaus mit der Laus
schrieb am 17. Januar 2011 um 16:12 Uhr:
find /tmp/ -type f -size +100M -print0 2>/dev/null |xargs -0 ls -lhaS
5
Klaus mit der Laus
schrieb am 17. Januar 2011 um 16:13 Uhr:
find /tmp/ -type f -size +100M -print0 2>/dev/null |xargs -0 ls -lhaS6
Klaus mit der Laus
schrieb am 17. Januar 2011 um 17:49 Uhr:
die beiden Ansätze
ls -lahS $(find / -type f -size +100000k)
find /tmp/ -type f -size +100M -print0 2>/dev/null |xargs -0 ls -lhaS
sind zwar deutlich schneller als dieser
find / -type f -size +100000k -exec ls -lah {} \; 2>/dev/null | sort -r -k5
jedoch kommt es zu einer Fehlermeldung, wenn die maximale Anzahl von Argumenten erreicht wird. Die maximale Anzahl von Argumenten kann wie folgt ermittelt werden:
getconf ARG_MAX
7
Klaus mit der Laus
schrieb am 23. Januar 2011 um 15:27 Uhr:
warum wurde mein Kommentar gelöscht?
find / -type f -size +100M -print0 2>/dev/null |xargs -0 -i ls -lahS {}8
admin
schrieb am 23. Januar 2011 um 16:16 Uhr:
Sorry @Klaus mit der Laus,
vergesse immer die Beiträge zu genehmigen sorry nochmal.
Gruß
Markus
Schreiben Sie einen Kommentar zum Artikel