• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Gesamtgröße bestimmter Dateien ausfindig machen

WhopperBS

Member
Hallo zusammen,

ich möchte zz. folgende kleine Aufgabe lösen: Es soll nach Dateien mit einem bestimmten Zeitstempel gesucht, und anschließend die Gesamtgröße all dieser Dateien ausgegeben werden.

Mein Ansatz war nun dieser:
Code:
find / -type f -atime +365 -print0 | xargs -0 -r du -sh

'du' gibt dabei aber leider nur die Größe aller gefundenen Dateien einzeln aus. Eigentlich sollte ja gerade 'xargs' eine Zusammenfassung bewirken, so dass 'du' nur noch die Gesamtgröße ausspucken muss.

Wo liegt denn hier mein Denkfehler, bzw. wie kann man es besser machen?

Grüße
Whopper
 
Hallo WhopperBS,
WhopperBS schrieb:
ich möchte zz. folgende kleine Aufgabe lösen: Es soll nach Dateien mit einem bestimmten Zeitstempel gesucht, und anschließend die Gesamtgröße all dieser Dateien ausgegeben werden.
Code:
find / -type f -atime +365 -print0 | xargs -0 -r du -sh
Diese Zeile hier:
Code:
du -mtime -30
findet alle Dateien die nicht älter sind als 30 Minuten sind.
Ansonsten bietet das Manual folgendes an:
Code:
-c, --total                      produce a grand total
-h, --human-readable             print sizes in human readable format (e.g., 1K 234M 2G)
-S, --separate-dirs              do not include size of subdirectories
-s, --summarize                  display only a total for each argument
--time show                      time of the last modification of any file in the directory, or any of its
                                 subdirectories

lieben Gruß aus Hessen
 
A

Anonymous

Gast
WhopperBS schrieb:
Mein Ansatz war nun dieser:
Code:
find / -type f -atime +365 -print0 | xargs -0 -r du -sh

'du' gibt dabei aber leider nur die Größe aller gefundenen Dateien einzeln aus. Eigentlich sollte ja gerade 'xargs' eine Zusammenfassung bewirken, so dass 'du' nur noch die Gesamtgröße ausspucken muss.

Wo liegt denn hier mein Denkfehler, bzw. wie kann man es besser machen?

Hier bei "du":
Manpage du schrieb:
-s, --summarize
display only a total for each argument

du bei "-s" gibt für jedes Argument die Größe aus, heißt ein Verzeichnis als Argument würde zusammengefasst. find liefert aber hier lauter Einzelargumente auf einzelne Files.

das Prinzip (sellbst wenn es so funktionieren würde) würde hier in diesem Fall sowieso nicht zuverlässig mit du funktioneren da xargs irgend wann einmal die maximale Anzahl von Argumenten zusammen bekommt, und dann würde du mehrfach aufgerufen. Es würden dann mehrere Zwischenergebnisse erstellt werden, ;) besser eine komplette Liste mit du ausgeben lassen und diese über eine Pipe dann berechnen. zB mit awk
Code:
find / -type f -atime +365 -print0 | xargs -0 -n30  du -0sb | awk '{SUM+=$1}END{print SUM/1024/1024, "MB Gesamt"}'

robi
 
Oben