thomsens
Goto Top

Gesamtgröße aller gefundenen Daten -find-

Hallo,

ich moechte die Gesamtgroesse aller, von einem User erstellen Daten mit der "bash" ermitteln.

Dazu gebe ich folgendes ein:

find / -user username -exec du -hs {} \;

Als Ausgabe erscheinen dann alle gefundenen Daten des Benutzers "username" mit Datengröße durch (-exec du -hs {} \;).

Ich haette aber als Ausgabe gerne eine Summe aller Datengrößen, bsp. 36GByte.

Hat jemand eine Idee?

Viele Gruesse Thomsens

Content-ID: 136166

Url: https://administrator.de/contentid/136166

Ausgedruckt am: 08.11.2024 um 15:11 Uhr

Raven42
Raven42 17.02.2010 um 14:45:14 Uhr
Goto Top
Versuch es mal hiermit:

find / -user username | du -c
thomsens
thomsens 17.02.2010 um 15:14:38 Uhr
Goto Top
Leider nein. Damit hatte ich angefangen. Aber an der Stelle wird der Befehl "du" nicht richtig interpretiert. Er listet immer die Groesse des "pwd". Egal welcher Benutzer welche Datei erstellt hat.

Beispiel:

"du -c" liefert immer den gleichen Wert wie "find / -user username | du -c"
Raven42
Raven42 17.02.2010 um 16:00:02 Uhr
Goto Top
Stimmt, kannst Du aber mit xargs umgehen:

find / -user username | xargs du -ch
thomsens
thomsens 17.02.2010 um 17:30:06 Uhr
Goto Top
Hi, bitte einmal ausprobieren. Es funktioniert nicht mit "xargs". "du" liefert falsche Werte zurueck und spuckt bei einigen Benutzern dutzdend Fehlermeldungen aus. Aber die Idee war gut.

Thomsens
Raven42
Raven42 17.02.2010 um 17:40:53 Uhr
Goto Top
Hab ich ausprobiert, allerdings nicht ab /

Kann es sein, das die Fehlermeldungen von Dateien kommen, die ein - o.ä. enthalten?
Dann schreib noch 2 Bindestriche dahinter, dann weiß der 'du'-Befehl, jetzt kommen keine Optionen mehr.

Also so:
find / -user username | xargs du -ch --
6890
6890 17.02.2010 um 20:31:05 Uhr
Goto Top
Hi,

probier doch mal
find ./ -user username -exec du -hc +
den mit dem "+" werden alle argumente die find findet mit einmal übergeben und nicht jedes einzeln wie bei -exec du -hs \;

mfg
thomsens
thomsens 18.02.2010 um 14:05:51 Uhr
Goto Top
Danke für die Tipps. Ich habe einiges probiert. Der Befehl:

1. find /mnt -user username | xargs du -ch --

Liefert nicht die richtigen Werte. Bei komplizierten und vielen Daten der Nutzer erhalte ich die Fehlermeldung:

"du: cannot access"

2. find /mnt -user username -exec du -hc {} +

Das ist schon ein ganzes Stück besser. Haben die Nutzer wenige Daten liefert mir der Befehl den richtigen Wert. Bei vielen Daten kommt die Meldung:
"du: Argument list is too long"
Und das Ergebnis ist dann falsch.

Dann hatte ich noch:

3. find /mnt -user username -exec xargs du -hc {} +

Das führt leider zu gar keinem Ergebnis.

Vielleicht hat jemand noch eine Idee.

Thomsens