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
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
dann bekomm ich endlich mal ne richtige antwort ...
... in form von etlichen Din-A4 seiten
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...
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):
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):
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 ^^):
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
Verfasst: 15.11.2004, 15:25
von cirad
@pawlak:
Sehr richtig. <: