Wie kann ich eine Liste sortieren, indem eine von Menschen lesbare Dateigröße verwendet wird, eine numerische Sortierung, die die Größenkennung (G, M, K) berücksichtigt? Kann ich du -shzum Beispiel die Ausgabe sortieren ?
Problem: Betrachten Sie das Problem, Dateien / Ordner aufzulisten und nach ihrer Größe zu sortieren. Sie können dies erreichen, indem Sie Folgendes ausführen:
du -s * | sort -n
Dadurch werden die Dateien / Ordner nach ihrer Größe sortiert. Der Wert für die gedruckte Größe ist jedoch in Byte (oder Megabyte oder Gigabyte, falls Sie dies wünschen).
Es wäre wünschenswert, nach den vom Menschen lesbaren Werten sortieren zu können, damit ich etwas analog ausführen kann
Bearbeiten: Sie können Ihre Versionen überprüfen, indem Sie du --versionund sort --versionob Sie die GNU-Versionen verwenden. Wenn Sie Homebrew verwenden, müssen Sie möglicherweise gduund verwenden gsort.
OSX hat diese Option nicht. Sie können homebrew verwenden, um 'brew install coreutils' aufzubauen (wobei allen coreutils-Befehlen ein 'g' vorangestellt wird). Sie können dann gdu -hs * | tun gsort -h`.
dsummersl vor 10 Jahren
7
Nur um den Punkt von @ dsummersl zu verdeutlichen: Das `du -hs *` funktioniert gut unter Mac OS X, aber sort -h gibt `sort: invalid option-h` zurück. Sie können das coreutils-Paket auch über MacPorts installieren, wie hier beschrieben (http://tunafreedolphin.com/?p=416).
jvriesem vor 10 Jahren
1
Wenn Sie sich nur Sorgen um Dateien machen, die größer als 1 MB sind, so wie Sie es scheinen, können Sie sie mit diesem Befehl sortieren und mit awk die Größe in MB konvertieren:
du -s * | sort -n | awk ''
Auch hier werden die Größen auf den nächsten MB gerundet. Sie können die Konvertierung in die Einheit Ihrer Wahl ändern.
Dies ist ähnlich wie: du -sm * | sort -n`. `-s` /` -g` macht 'du'-Ausgabegrößen in Megabytes / Gigabytes.
notnoop vor 15 Jahren
0
Für MB musst du durch 1024 mehr teilen. Es wird also `int ($ 1 / (1024 * 1024))` sein
Pratik Khadloya vor 10 Jahren
0
2
Mark Crossfield
Dieser übernimmt die Dateinamen mit Leerzeichen oder Apostrophe und arbeitet auf Systemen, die nicht unterstützen, xargs -doder sort -h:
du -sk * | sort -n | awk '' | während gelesen f; do du -sh "$ f"; erledigt
1
lukmansh
Dieser Befehl wird nach Größe in MB sortiert
du --block-size=MiB --max-depth=1 path | sort -n
Das macht der Benutzer eigentlich schon, er hat das Beispiel mit MiB nicht gegeben, aber darüber gesprochen. Was er / sie sucht, ist, in der Lage zu sein, zu sortieren, wenn er die `-h`-Flagge verwendet.
Tonin vor 11 Jahren
0