Wie kann eine Liste von Dateien aus einem Verzeichnisstamm angezeigt werden, die in absteigender Reihenfolge der Dateigröße von der Befehlszeile sortiert sind?
Wie kann eine Liste von Dateien aus einem Verzeichnisstamm angezeigt werden, die in absteigender Reihenfolge der Dateigröße von der Befehlszeile sortiert sind?
Antworten:
Wenn Sie alles im Verzeichnis rekursiv auflisten möchten, verwenden Sie entweder findoder dumit sort:
find /some/path -type f -printf '%s %p\n' | sort -rn
du -h /some/path | sort -rh
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. sortverwendet dementsprechend numerisch für das erstere ( -n) und lesbar für das letztere ( -h).
Bei größerer Komplexität wäre die beste Option:
find /some/path -type f -print0 | du --files0-from=- -0h | sort -rzh | tr '\0' '\n'
dukann eine durch NUL getrennte Liste von Dateien aus der Eingabe lesen und findmit NUL getrennte Dateinamen drucken -print0. sortSie 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 finddie Größe drucken, wie im ersten Befehl gezeigt, aber -printf '%s %p\0'weiterhin NUL-getrennte Zeilen verwenden und die Verwendung duals Mittelmann überspringen .
Wie @Terrance sagte, ls -lSsortiert Dateien in absteigender Reihenfolge. Funktioniert für alle Dateien ls -lSa.
Es reicht aus, duund zu verwendensort
du --max-depth 1 * | sort -n -k1
Beispiel für die Ausgabe,
$ du --max-depth 1 * | sort -n -k1
4 bin/CS-1400
4 bin/csrc
4 bin/DIR@YOLO
4 bin/EET2350
4 bin/HW6
4 RS232Functions.c
4 RS232Functions.c~
4 Untitled Folder
8 1204686.docx_en-US_zh-CN.docx
8 bin/shell
16 MSUDenver_50th_Formal.png
20 bb0239ba-1718-4778-b19a-3826f36a95cd.png
20 mainLogo.png
24 bin/NAME WITH SPACES
32 bin/ala
32 bin/Online_book
60 bin/HORTON
72 bin/JAVA-OTHER
Dieser Befehl wird nach Größe in KB sortiert
du -sk * | sort -n
Sie können es umkehren mit:
du -sk * | sort -rn
ls -lSsortiert Dateien vom größten zum kleinsten.man lswird dir das zeigen.