Totale Grösse aller Unterverzeichnisse

Post Reply
Message
Author
Nemo

Totale Grösse aller Unterverzeichnisse

#1 Post by Nemo »

Hallo Ihr Linux Profis

Wie kann ich in einem Verzeichnis die totale Grösse aller darin entaltenen Unterverzeichnisse anzeigen lassen.
du -k . gibt wohl die Grösse aller Unterverzeichnise dar, listet jedoch auch alle darin enthaltenen Unterverzeichnise und Datein (am Bildschirm) aus.

So sollte das Resultat in etwa aussehn:
340 gnome2
1912 thunderbird
3980 firefox

Danke für Eure Hilfe.

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#2 Post by jochen »

du mit Option s (summary) gibt nur die Gesamtmenge des belegten Platzes zurück. Also brauchst Du nur die Verzeichnisse ab dem Arbeitsverzeichnis mittels "du -s" beharken. Und das geht wiederum am leichtesten mit find:

Code: Select all

find . -type d -maxdepth 1 -print | sed -e '1d' | xargs du -s
find sucht die Verzeichnisse im Arbeitsverzeichnis, sed schneidet die erste Zeile weg (enthält immer ".") und xargs ruft du mit Option -s und den Verzeichnisnamen als Argument auf.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

joersch

#3 Post by joersch »

Mahlzeit,

auf die schnelle und ohne schön:
find . -type d | du -kh

Gruss

joersch

#4 Post by joersch »

Mahlzeit,

und schon wieder zu langsam...

Nemo

#5 Post by Nemo »

Vielen Dank für Eure rasche Antwort. Auf einem Linux-System funktionieren Eure Lösungen einwandfrei. Jedoch benötige ich diese auf einem IRIX (SGI) System, welches beide Lösungen nicht ausführen kann:

find . -type d -maxdepth 1 -print | sed -e '1d' | xargs du -s
-maxdepth: bad option
Usage: find path-list predicate-list

und

find . -type d | du -kh
Illegal option -- h
Usage: du [-aklmxrsLR] [path ...]

Gibts sonst noch Möglichkeiten?

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#6 Post by jochen »

Tja, dann wird es etwas unübersichtlicher:

Code: Select all

ls -la | grep '^d' | cut -c54- | sed -e '/^\.$/d' -e '/^\.\.$/d' | xargs du -s
ls gibt alle Dateien aus, von denen grep nur Verzeichnisse weiterleitet. cut reicht von diesen Zeilen nur den Teil ab Zeichenposition 54 weiter, weil dort der eigentliche Dateiname beginnt. Diesen Wert musst Du ggf. bei Dir etwas anpassen. sed filtert die Einträge "." und ".." heraus, die immer vorkommen un in diesem Zusammenhang unerwünscht sind. Den Part mit xargs kennst Du ja schon.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Nemo

#7 Post by Nemo »

Erstmals Danke für die Hilfe.
Jedoch scheint auch dies nicht zu funktionieren.

ls -la | grep '^d' | cut -c54- | sed -e '/^\.$/d' -e '/^\.\.$/d' | xargs du -s
05: No such file or directory

Was mache ich falsch und gibts sonst noch Möglichkeiten?

joersch

#8 Post by joersch »

Mahlzeit,
wenn die option -h bei deinem 'du' nicht tut - lass sie weg!:
find . -type d | du -k
ansonsten: wie wäre es mit selbst probieren?

Gruss

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#9 Post by jochen »

Hast Du die Kommandozeile mittels Cut'n'Paste übernommen? Nicht, dass ich hier ein IRIX zum Ausprobieren hätte, aber ich verwende dabei nichts, was ein Standard-UNIX nicht können sollte. Daher würde ich jetzt am ehesten einen Abtippfehler vermuten.

Hast Du die Position 54 beim cut-Kommando überprüft? Vielleicht gibt Dein ls den Namen etwas weiter rechts/links aus, dann muss dieser Wert natürlich angepasst werden. Das stand auch im vorhergehenden Posting - hast Du das gecheckt?

Ansonsten kannst Du ja mal die Pipe kürzen: erst mal nur ls und grep, dann ls, grep und cut. Und schaue dann auch den Output und versuch zu erkennen, ob ddas jeweils folgende Kommando damit umgehen kann.

Weitere Tipps kann ich Dir nur geben, wenn Du auch mal postest, was Du an Dateien bzw. Verzeichnissen vorliegen hast.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Post Reply