Wie sortieren Sie du -sh /dir/*
nach Größe? Ich habe eine Seite gelesen, auf der die Verwendung angegeben ist, | sort -n
aber das ist offensichtlich nicht richtig. Hier ist ein falsches Beispiel.
[~]# du -sh /var/* | sort -n
0 /var/mail
1.2M /var/www
1.8M /var/tmp
1.9G /var/named
2.9M /var/run
4.1G /var/log
8.0K /var/account
8.0K /var/crash
8.0K /var/cvs
8.0K /var/games
8.0K /var/local
8.0K /var/nis
8.0K /var/opt
8.0K /var/preserve
8.0K /var/racoon
12K /var/aquota.user
12K /var/portsentry
16K /var/ftp
16K /var/quota.user
20K /var/yp
24K /var/db
28K /var/empty
32K /var/lock
84K /var/profiles
224M /var/netenberg
235M /var/cpanel
245M /var/cache
620M /var/lib
748K /var/spool
command-line
text-processing
disk-usage
sort
units
Xenoterracid
quelle
quelle
sort -h
hat bei mir in Ubuntu 16.04 LTS im August 2017 funktioniert. Zuerst finde ich mein gemountetes Laufwerk voncd /mnt
(gemountet von UUID in fstab). Dann mache ichdu >~/dumnt.out
dannsort -h ~/dumnt.out >~/dumntsort.out
kann ich `tail ~ / dumntsort.out machen, um die größten Raumschweine zu sehen.Antworten:
Wenn Sie GNU-Coreutils haben (die in den meisten Linux-Distributionen üblich sind), können Sie diese verwenden
Die
-h
Option gibt an,sort
dass die Eingabe vom Menschen lesbar ist (Zahl mit Einheit; 1024-basiert, sodass 1023 als weniger als 1 KB angesehen wird, was dem entspricht, was GNUdu -h
tut).Diese Funktion wurde im August 2009 zu GNU Core Utilities 7.5 hinzugefügt .
quelle
-r
zurcoreutils
überbrew
den Ordner bin installieren und ihnPATH
in Ihre RC- Datei einfügen. Er-h
sollte verfügbar sein.tail
Befehl nicht, um die Schweine zu sehen.Verwenden Sie das Flag -k, um 1-KByte-Blöcke anstelle von lesbaren Blöcken zu zählen. Dann haben Sie eine gemeinsame Einheit und können ganz einfach eine numerische Sortierung durchführen.
Sie brauchen nicht explizit menschliche Einheiten, aber wenn ja, dann gibt es eine Reihe von Möglichkeiten, dies zu tun. Viele scheinen die oben beschriebene 1K-Blocktechnik zu verwenden und dann einen zweiten Aufruf an du zu senden.
https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
Wenn Sie die hinzugefügten KB-Einheiten sehen möchten, verwenden Sie:
quelle
Wenn Sie keine neuere Version von GNU coreutils haben , können Sie
du
ohne Aufruf-h
sortierbare Ausgabe erhalten und mit ein wenig Nachbearbeitung eine benutzerfreundliche Ausgabe erzeugen. Dies hat den Vorteil, dass es funktioniert, auch wenn Ihre Version vondu
die-h
Flagge nicht hat .Wenn Sie SI-Suffixe (dh ein Vielfaches von 1000 anstelle von 1024) wünschen, ändern Sie 1024 in 1000 im
while
Schleifenkörper. (Beachten Sie, dass 1000 in der Bedingung vorgesehen ist, so dass Sie zB1M
eher als erhalten1000k
.)Wenn Sie
du
die Option zum Anzeigen von Größen in Byte haben (z. B.-b
oder-B 1
- Beachten Sie, dass dies den Nebeneffekt haben kann, dass die tatsächlichen Dateigrößen anstelle der Festplattennutzung gezählt werden), fügen Sie am Anfang vons
(dhs=" kMGTEPYZ";
) ein Leerzeichen oderif (x<1000) {return x} else {x/=1024}
am Anfang von (dh ) ein diehuman
Funktion.Die Anzeige einer Dezimalstelle für Zahlen im Bereich von 1 bis 10 wird dem Leser als Übung überlassen.
quelle
Wenn Sie nicht haben
sort -h
, können Sie dies tun:Dies ruft die du-Liste ab, trennt das Suffix und sortiert danach. Da es für <1 KB kein Suffix gibt, fügt der erste sed ein B (für Byte) hinzu. Der zweite Satz fügt ein Trennzeichen zwischen der Ziffer und dem Suffix ein. Das dritte sed wandelt G in Z um, so dass es größer als M ist; Wenn Sie Terabyte-Dateien haben, müssen Sie G in Y und T in Z konvertieren. Schließlich sortieren wir nach den beiden Spalten und ersetzen dann das Suffix G.
quelle
Unter OS X können Sie die benötigten Coreutils über Homebrew installieren :
Damit haben Sie
gsort
, die den-h
Befehlszeilenparameter enthält .quelle
Dieses kleine Perl-Skript erledigt den Trick. Speichern Sie es als
duh
(oder was auch immer Sie wollen) und rufen Sie es mitduh /dir/*
quelle
Da Mac OS X nicht die
-h
Option für hatsort
, habe ichsed
undawk
für einen ersten Versuch versucht und gelernt :Es ist eine lange Schlange. Erweitert ist es:
Ich habe es unter Mac OS X Mavericks, Yosemite und Ubuntu 2014-04 mit
awk
der Standardeinstellungawk
(nawk
da beideawk
und aufnawk
zeigen/usr/bin/mawk
) oder gawk versucht, und alle haben funktioniert.Hier ist ein Beispiel für die Ausgabe auf einem Mac:
Stattdessen habe
du -sk *
ich in @ Stefans Antwort gesehen, wo auch die Gesamtsumme angezeigt wird, und zwar ohne einen Dateisystem-Mount-Punkt zu durchlaufendu -skcx *
quelle
Folgendes verwende ich unter Ubuntu 10.04, CentOS 5.5, FreeBSD und Mac OS X.
Ich habe die Idee von www.geekology.co.za/ und earthinfo.org sowie die berüchtigten Enten von "Linux Server Hacks" von O'Reilly ausgeliehen. Ich passe es immer noch an meine Bedürfnisse an. Dies ist noch in Arbeit (Wie in, ich habe heute Morgen im Zug daran gearbeitet.):
Hier ist die Ausgabe:
quelle
du -cks -x *
? (mit demducks
und dannchmod a+x ducks
und dann./ducks
mit auszuführen? Dann sehe ich nur die Gesamtbelegung der Festplatte, sowohl unter Mac OS X als auch unter Ubuntu 2014-10. Ich habe auch versucht, dieducks() { ...}
Definition in.bashrc
und dannducks
zum Ausführen zu verwenden, und das Gleiche unter Mac OS X, sehen Sie nur die GesamtsummeVerrückt werden mit diesem Skript -
quelle
In Abwesenheit von GNU
sort -h
sollte dies in den meisten UNIX-Umgebungen funktionieren:quelle
Dieser behandelt Dateinamen mit Leerzeichen oder Apostrophen und funktioniert auf Systemen, die Folgendes nicht unterstützen
xargs -d
odersort -h
:was in ... endet:
quelle
Dadurch wird die Ausgabe in absteigender Reihenfolge der Größe sortiert:
Dadurch wird die Ausgabe in aufsteigender Reihenfolge der Größe sortiert:
PS: Dies kann verwendet werden, um nach jeder Spalte zu sortieren, aber die Spaltenwerte sollten dasselbe Format haben
quelle
sort -k1rn
entsprichtsort -rn
der ersten Folge von Dezimalstellen in jeder Zeile und wird nur numerisch sortiert. Es versteht nicht , Punkt schwimmen, und es versteht nicht denk
,M
,G
... Suffixe. 10.1k würde als größer als 1.23G betrachtet werdenGetestet unter Solaris!
Dadurch werden alle Verzeichnisgrößen rekursiv ausgegeben. Unten wird das größte Verzeichnis in Gigabyte und oben das kleinste in Kilobyte angezeigt.
quelle
Das größte ist unten:
quelle
Befehl:
du -ah . | sort -k1 -h | tail -n 50
Erläuterung:
du -ah .
sort -k1 -h | tail -n 50
quelle
Sortieren nach Größe in MB
quelle
du -h
(von Menschen lesbare Ausgabe) numerisch sortiert bekommen. Darauf geben Sie keine Antwort. Möglicherweise möchten Sie auch Ihr UNIX-SE-Konto mit den anderen Konten verknüpfen, die Sie auf den anderen SE-Standorten haben.Dieses Skript ist noch einfacher:
quelle
für OSX
quelle
-k
nur das Abbrechen,-h
und wenn ja, wie liefert dies die vom OP angeforderte vom Menschen lesbare Ausgabe.