Seite 1 von 1

ls - Ordner sortieren nach Größe

Verfasst: 12.11.2004, 16:07
von much
Also folgendes Problem:
Ich habe verschiedene Ordner, die unterschiedlich großen Inhalt haben und möchte diese der größe nach sortieren.

Bei Dateien hab ich das bisher mit "ls -Ssh | less" gemacht.
Doch dummerweise werden damit alle Ordner nur mit 4.0k aufgeführt und nicht "richtig" sortiert.

Ich hoffe ihr versteht was ich meine und wie ich das möglichst einfach angezeigt bekomme :D

danke
--much

Verfasst: 12.11.2004, 16:41
von Mithrandir
'du' ist ein Befehl, der dir Ordner und ihre Größen anzeigt.

Verfasst: 12.11.2004, 16:47
von much
Ist schon klar, aber ich will die Ordner nach Größe sortiert haben. ;)

Verfasst: 12.11.2004, 17:41
von pawlak
omg wenn cirad das sieht! ;)

Verfasst: 12.11.2004, 17:59
von much
Original erstellt von pawlak
omg wenn cirad das sieht! ;)
hehe, der war gut :D
dann bekomm ich endlich mal ne richtige antwort ...







... in form von etlichen Din-A4 seiten :ugly:

Verfasst: 12.11.2004, 19:05
von Chawki
Aus meinen Notizen:

Die Verzeichnisse nach der (rekursiven) Speicherbelegung auflisten:
find -type d -maxdepth 1 | xargs du -sm | sort +0n | tail -50

Die Speicherbelegung der Verzeichnisse im aktuellen Verzeichnis:
du -h --max-depth=1
und für ein Verzeichnis:
du -sh <verzeichnis>

Vielleicht auch interessant:

Die (50) größten Dateien im System finden:
cd /; ls -laFR | sort +4n | tail -50
Unschön: Auch Device-Dateien u. /proc-Dateien werden aufgelistet und der absolute Pfad fehlt.
Alternativen: ls -alSr im akt. Verz.,
(find . -ls | sed -e 's/ */ /g;' | sort +6n)

Verfasst: 12.11.2004, 19:47
von colo2
Ordner gibt's keine...

Code: Alles auswählen

find . -maxdepth 1 -type d | du | sort -r
kannst du auch noch mit tail -n<zeilenanzahl> limitieren, wenn's zu viele sind. Wenn du die Größe absteigend sortiert haben willst, einfach den "-r"-Parameter von Sort omittieren.

Verfasst: 12.11.2004, 20:51
von edgewalker
du -cks */

Eselsbrücke: "ducks".

Wenn man den Slash weglässt, tauchen auch alle Dateien auf.

Will man auch die Dotfiles haben, geht das wohl noch am einfachsten mit

( shopt -s dotglob ; du -cks */ )

Die Ausgabe kann man dann nach belieben sortieren, zB

( shopt -s dotglob ; du -cks */ ) | sort -rnsk1
bzw
du -cks */ | sort -rnsk1

Verfasst: 12.11.2004, 20:59
von much
Danke nobody für den Tip mit den 50 größten Dateien, das ist auch praktisch.

Also ich hab eben folgendes probiert (nach colos Methode):

Code: Alles auswählen

find . -maxdepth 1 -type d | du -h | sort -r
Das ist genau das was ich wollte, aber eins wundert mich noch - warum werden manche Sachen nicht richtig einsortiert?
Aha, der sortiert nur nach dem ersten Zeichen, aber seht doch einfach selbst:

Code: Alles auswählen

92K     ./306362
52K     ./349699
48K     ./148568
44K     ./114020
36K     ./231296
36K     ./225739
36K     ./158618
36K     ./132911
[red]348K    ./309577[/red]
32K     ./137083
28K     ./812208
24K     ./110078
24K     ./103312
[red]240K    ./220017[/red]
20K     ./620927
20K     ./331102
20K     ./319238
20K     ./283419
20K     ./196113
20K     ./165766
20K     ./111622
16K     ./968863
16K     ./831948
Wenn man das noch lösen könnte wäre die Sache perfekt ;)

Verfasst: 12.11.2004, 21:04
von much
Original erstellt von edgewalker
du -cks */

Eselsbrücke: "ducks".
Da kommt bei mir nix vernünftiges dabei raus :/

Code: Alles auswählen

24      103312
24      110078
20      111622
44      114020
12      124144
16      124489
12      126399
16      131609
36      132911
32      137083
48      148568
16      150553
16      152356
12      157899
36      158618
Sehr seltsam.
Ich will die Verzeichnisse doch nicht nach ihrem Namen ordnen, sondern der größe nach :)

Verfasst: 12.11.2004, 21:08
von edgewalker
Original erstellt von much
Also ich hab eben folgendes probiert (nach colos Methode):

Code: Alles auswählen

find . -maxdepth 1 -type d | du -h | sort -r
Das ist falsch, du ignoriert seine Standardeingabe, das find kannst du dir also sparen.
Das ist genau das was ich wollte, aber eins wundert mich noch - warum werden manche Sachen nicht richtig einsortiert?
Erstens wird per Default alphabetisch sortiert, 10 kommt also vor 2. Das kann man mit -n ändern. Dann hast du aber immer noch das Problem, dass 20K "grösser" sind als 2M.

Du kannst also nicht mit lesbaren Einheiten arbeiten.

(Übrigens, editierten Post von mir nochmal lesen.)

Verfasst: 12.11.2004, 21:12
von much
Problem scheint gelöst (man sort lesen hilft eben doch ^^):

Code: Alles auswählen

find . -maxdepth 1 -type d | du -h | sort -rg
Allerdings muss jetzt das find noch raus, ist ja laut dir überflüssig. Aber das Ergebnis stimmt:

Code: Alles auswählen

348K    ./3095772
240K    ./2200170
92K     ./3063624
52K     ./3496997
48K     ./1485682
44K     ./1140200
36K     ./2312964
36K     ./2257392
36K     ./1586188
36K     ./1329116
32K     ./1370839
/edit: Man kann dann eben immer entscheiden, ob man sein Ergebnis in Megabyte(-m) oder Kilobyte(-k) haben will.
"du -cksm * | sort -rnsk1"
Ist genau das was ich brauchte.

Verfasst: 12.11.2004, 23:36
von edgewalker
Wenn du -m hast, brauchst du -k nicht -- also du -cms.

Verfasst: 12.11.2004, 23:39
von much
Hab ich übersehen.

Mist :ugly:

Verfasst: 15.11.2004, 15:25
von cirad
@pawlak:
Sehr richtig. <: