Wie kann ich alle Dateien in einem Verzeichnis nach Größe sortieren?

48

Wie kann ich die Dateien in einem Unix-Verzeichnis anzeigen, sortiert nach ihrer lesbaren Größe vom größten zum kleinsten?

Ich habe es versucht

du -h | sort -V -k 1 

aber es scheint nicht zu funktionieren.

user46976
quelle
Können Sie bitte klären, ob die Größe des Unterverzeichnisses auch in der Ausgabe erscheinen soll und ob Sie nach der scheinbaren Größe der Dateien oder der tatsächlichen Größe suchen, die sie auf der Festplatte verwenden?
Juli

Antworten:

53

ls(1) /sort:

-S     sort by file size
Hallo71
quelle
1
-Sist zumindest auf Ubuntu kein gültiges Sortierargument mehr. Die folgende Antwort von @alex hat bei mir funktioniert. Der Antwortlink lautet superuser.com/a/990437/528836 .
Prasanna
33
$ ls -lhS

-l     use a long listing format
-h     with -l, print sizes in human readable format (e.g., 1K 234M 2G)
-S     sort by file size
kev
quelle
16

Wenn Sie die entsprechende sortVersion haben, können Sie einfach verwenden:

du -h | sort -rh

meins ist

$ sort --version
sort (GNU coreutils) 8.12
ztank1013
quelle
4

ls -Swar für mich keine Option für das Betriebssystem. Folgendes funktionierte:
ls -l | sort -k 5nr
Sie "key" war die Angabe der zu sortierenden Spalte (get it, the "key"). Oben spezifiziere ich die -k 5nrBedeutungssortierung in der 5. Spalte, die die Größe (5) hat, die als Zahl (n) in absteigender Reihenfolge (n) ausgewertet wird.

Referenz Art Dokumentation für weitere Informationen

Alex
quelle
4

du -ha | sort -h

du : Schätzung der Festplattennutzung.

-h : for human
-a : all files

sort : Textzeilen sortieren.

-h : for human

man du; man sortfür mehr. Es funktioniert für mich auf Ubuntu V15.

Andrew_1510
quelle
1

Ich habe das für mich arbeiten:

ls -l | sort -g -k 5 -r

Was (ich habe es gerade herausgefunden) dasselbe ist wie:

ls -lS
Aaron
quelle
0

Im Gegensatz ls -Sdazu werden mit spärlichen Dateien richtig umgegangen:

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
jlliagre
quelle