Auf einem Linux-Server, mit dem ich arbeite, schreibt ein Prozess zufällig benannte Dateien in zufälligen Intervallen. Hier ist eine kleine Probe, welche die Dateigröße, Änderungsdatum & Zeit und Dateiname:Wie summiere ich Dateigrößen in bash zusammen und gruppiere die Ergebnisse nach Datum?
27659 2009-03-09 17:24 APP14452.log
0 2009-03-09 17:24 vim14436.log
20 2009-03-09 17:24 jgU14406.log
15078 2009-03-10 08:06 ySh14450.log
20 2009-03-10 08:06 VhJ14404.log
9044 2009-03-10 15:14 EqQ14296.log
8877 2009-03-10 19:38 Ugp14294.log
8898 2009-03-11 18:21 yzJ14292.log
55629 2009-03-11 18:30 ZjX14448.log
20 2009-03-11 18:31 GwI14402.log
25955 2009-03-12 19:19 lRx14290.log
14989 2009-03-12 19:25 oFw14446.log
20 2009-03-12 19:28 clg14400.log
(Beachten Sie, dass manchmal die Dateigröße Null sein kann.)
Was würde Ich mag ein Bash-Skript die Größe der Dateien summieren, nach Datum aufgeschlüsselt, Ausgabe in etwa so produzieren (vorausgesetzt, meine Arithmetik korrekt ist):
27679 2009-03-09
33019 2009-03-10
64527 2009-03-11
40964 2009-03-12
die Ergebnisse Aktivität Trends im Laufe der Zeit würden zeigen, und die außergewöhnlich arbeitsreiche Tage markieren.
In SQL, würde der Betrieb zum Kinderspiel sein:
SELECT SUM(filesize), filedate
FROM files
GROUP BY filedate;
Nun, dies alles wahrscheinlich in Perl oder Python ist ziemlich einfach, aber ich würde wirklich ein Bash-Shell oder awk Lösung bevorzugen. Es scheint mir besonders schwierig zu sein, die Dateien nach Datum in bash zu gruppieren (besonders, wenn Sie kein bestimmtes Datumsformat annehmen können). Die Größe zu summieren könnte man in einer Schleife machen, nehme ich an, aber gibt es einen leichteren, eleganteren Ansatz?
tatsächlich können Sie das Datumsformat mit ls annehmen -lt --time-style = +% F – vartec
Ja, danke dafür. Zusammen mit der Lösung von @ashawley kommt alles zusammen. – yukondude