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.
Totale Grösse aller Unterverzeichnisse
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: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
Code: Select all
find . -type d -maxdepth 1 -print | sed -e '1d' | xargs du -s
Jochen
Die grösste Lüge der EDV? "Mal eben..."
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?
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?
Tja, dann wird es etwas unübersichtlicher: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
Code: Select all
ls -la | grep '^d' | cut -c54- | sed -e '/^\.$/d' -e '/^\.\.$/d' | xargs du -s
Jochen
Die grösste Lüge der EDV? "Mal eben..."
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
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..."