私が扱っているLinuxサーバでは、ランダムな名前のファイルをランダムな間隔で書き込みます。ここでは、小さなファイルサイズを示すサンプル、変更日&時間、およびファイル名です:ファイルサイズをbashで合計するには、結果を日付別にグループ化しますか?
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
は(。時々、ファイルサイズがゼロになることに注意してください)
私が望むどのようなbashスクリプトです
27679 2009-03-09
33019 2009-03-10
64527 2009-03-11
40964 2009-03-12
結果は時間をかけての活動の傾向を示すだろう、と非常に忙しい日ハイライト:(私の算術が正しいと仮定して)、このような出力に何かを生産する、日付別に分類ファイルのサイズを合計します。 SQLで
、操作は楽勝のようになります。今
SELECT SUM(filesize), filedate
FROM files
GROUP BY filedate;
、これはすべて、おそらくPerlやPythonで非常に簡単ですが、私は本当にbashシェルやawkのソリューションを好むだろう。ファイルを日付でbashでグループ化するのは特に難しいようです(特に、特定の日付形式を想定できない場合)。サイズを集計することは、私が想定しているループで行うことができますが、より簡単でよりエレガントなアプローチですか?私は、多くの場合のawkこのイディオムを使用
を合算-lt --time-style = +%F – vartec
はい、ありがとうございます。 @ashawleyのソリューションと一緒に、それはすべて一緒に来ました。 – yukondude