Anzeigen der Dateigrößen in sortierter Reihenfolge

9

Wie kann eine Liste von Dateien aus einem Verzeichnisstamm angezeigt werden, die in absteigender Reihenfolge der Dateigröße von der Befehlszeile sortiert sind?

Andriy Kryvtsun
quelle
2
ls -lSsortiert Dateien vom größten zum kleinsten. man lswird dir das zeigen.
Terrance

Antworten:

4

Aus Ihrem Ordner:

find . -maxdepth 1 -type f -exec du -h {} + | sort --human-numeric-sort --reverse

Sie können festlegen, wie tief nach Dateien mit -maxdepthoder ohne Parameter gesucht werden soll, um rekursiv zu sein.

EdiD
quelle
3

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 .

muru
quelle
1

Wie @Terrance sagte, ls -lSsortiert Dateien in absteigender Reihenfolge. Funktioniert für alle Dateien ls -lSa.

Niemand ist hier
quelle
0

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
Sergiy Kolodyazhnyy
quelle
0

Dieser Befehl wird nach Größe in KB sortiert

du -sk * | sort -n

Sie können es umkehren mit:

du -sk * | sort -rn
Cleber Reizen
quelle