Liefert die Größe aller Dateien in einem Verzeichnis, das im letzten Jahr geändert wurde

390
Damon

Ich versuche, die Speichernutzung auf einem Linux-Server auszuwerten.

Der größte Teil des Speichers stammt von den Bildern. Ich würde gerne wissen, ob ich die Größe der im letzten Jahr geänderten Dateien verstehen kann. und vielleicht auch die letzten 5 Jahre, um zu sehen, wie das mit der Gesamtgröße des Bilderverzeichnisses (40 GB) verglichen wird

Ich habe es versucht du -hund das ist praktisch, aber ich kann nicht sehen, wie ich diese Ergebnisse nach dem Änderungsdatum filtern kann.

3

2 Antworten auf die Frage

3
agc

Wenn das Paket num-utils installiert ist, können Sie auf numsumeinfache Weise viele Nummern hinzufügen. während numfmtvereinfacht die Ausgabe:

find . -type f -mtime -365 -printf '%s\n' | numsum | numfmt --to=iec 

( findCode von Ziggy Crueltyfree Zeitgeister entlehnt .)

In den letzten 5 Jahren:

find . -type f -mtime -$((365 * 5)) -printf '%s\n' | numsum | numfmt --to=iec 

Wenn eine genaue Tageszählung erforderlich ist, datewird dies bereitgestellt. Hier ist eine Shell-Funktion, die die genaue Anzahl von Tagen in den letzten n Jahren zurückgibt :

# covert Last _n_ Years to Days # usage: ly2d n ly2d() \ { echo $(( \ $(( `date -d today +%s` - \ `date -d $1" years ago" +%s` )) \ / 60 / 60 / 24 )) ; \ } 

Verwendung ly2dfür die letzten 5 Jahre:

find . -type f -mtime -$(ly2d 5) -printf '%s\n' | numsum | numfmt --to=iec 
ich scheine keine numfmt zur verfügung zu haben. erfordert das eine andere Bibliothek? Damon vor 7 Jahren 0
Das _coreutils_-Paket von Debian enthält _numfmt_ oder die [Upstream-Quelle] (http://gnu.org/software/coreutils). Wenn dies fehlschlägt, entfernen Sie die "numfmt". Die Summe wird dann in Byte angegeben. agc vor 7 Jahren 0
2
Ziggy Crueltyfree Zeitgeister

Sie können perl verwenden, um die Ausgabe von find zusammenzufassen:

find . -type f -mtime -365 -printf '%s\n' |\ perl -e 'my $s=0; while(<>) { $s += $_; } print "$s\n"' 
Wenn das Paket _num-utils_ installiert ist, ist _numsum_ einfacher als alles, was _perl_: `find ist. -type f -mtime -365 -printf '% s \ n' | numsum " agc vor 7 Jahren 3
Anhängen `| numfmt --to = iec` hilft auch. agc vor 7 Jahren 0
@agc Du solltest es als Antwort posten, kein Grund dazu nicht. Ich würde es gerne stimmen. MariusMatutiae vor 7 Jahren 0