Wie kann eine Liste von Dateien aus einem Verzeichnisstamm angezeigt werden, die in absteigender Reihenfolge der Dateigröße von der Befehlszeile sortiert sind?
command-line
Andriy Kryvtsun
quelle
quelle
ls -lS
sortiert Dateien vom größten zum kleinsten.man ls
wird dir das zeigen.Antworten:
Aus Ihrem Ordner:
Sie können festlegen, wie tief nach Dateien mit
-maxdepth
oder ohne Parameter gesucht werden soll, um rekursiv zu sein.quelle
Wenn Sie alles im Verzeichnis rekursiv auflisten möchten, verwenden Sie entweder
find
oderdu
mitsort
:Ersteres zeigt nur Dateien und die Größe in Bytes an. Letzteres zeigt sowohl die Datei- als auch die kumulative Verzeichnisgröße im lesbaren Format (unter Verwendung von KB, MB usw.) an.
sort
verwendet dementsprechend numerisch für das erstere (-n
) und lesbar für das letztere (-h
).Bei größerer Komplexität wäre die beste Option:
du
kann eine durch NUL getrennte Liste von Dateien aus der Eingabe lesen undfind
mit NUL getrennte Dateinamen drucken-print0
.sort
Sie können dann die durch NUL getrennte Liste von Größen und Dateinamen sortieren und schließlich NULs durch Zeilenumbrüche ersetzen, um eine bequeme Anzeige zu ermöglichen.Da Dateinamen und Pfade alles außer dem ASCII-NUL-Zeichen enthalten können, ist die Verarbeitung mit NUL-getrennten Zeilen der sicherste Weg.
Sie können auch
find
die Größe drucken, wie im ersten Befehl gezeigt, aber-printf '%s %p\0'
weiterhin NUL-getrennte Zeilen verwenden und die Verwendungdu
als Mittelmann überspringen .quelle
Wie @Terrance sagte,
ls -lS
sortiert Dateien in absteigender Reihenfolge. Funktioniert für alle Dateienls -lSa
.quelle
Es reicht aus,
du
und zu verwendensort
Beispiel für die Ausgabe,
quelle
Dieser Befehl wird nach Größe in KB sortiert
Sie können es umkehren mit:
quelle