何時毎にファイルを編集しているか集計する

何時ごろにファイルを編集することが多い? - みずぴー日記にインスパイヤーされて同様の集計をしてみました。 ただし、グラフで表すのではなく、百分率で表示します。 ファイルの更新日時を取得するのは、find と stat の組み合わせが便利です。 特に stat のオプションを使うと必要な情報だけを取得することができます。 ここでは stat から更新時間 (modified time) を Unix time 形式で取得し、これを元に計算しています。

#! /usr/local/bin/nawk -f
# edit_time.awk
# 何時頃にファイルを編集しているか集計する
# usage: nawk -f edit_time.awk [dir]

BEGIN {
    dir = ARGV[1] ? ARGV[1] : ".";
    find_stat_exec = "/usr/bin/find " dir " -type f "\
                     "| /usr/bin/xargs /usr/bin/stat --format='%Y %n'";
    time_zone = 9 * 3600;

    while ((find_stat_exec | getline) > 0) {
        hour = int(($1 + time_zone) / 3600) % 24;
        edit_time[hour]++;
        total++;
    }
    close(find_stat_exec);

    for (i = 0; i <= 23; i++) {
        printf("%2d: %5.2f%%\n", i, edit_time[i] / total * 100);
    }
}

ここではこのAWK Users JP :: 日本の AWK ユーザのためのハブサイトのファイルの更新時間を見てみます。 (実際にデータの格納されているディレクトリに移って実行しています)

$ gawk -f edit_time.awk
 0: 59.60%
 1:  1.26%
 2:  1.26%
 3:  0.37%
 4:  0.42%
 5:  0.00%
 6:  0.00%
 7:  0.00%
 8:  0.10%
 9:  0.05%
10:  0.58%
11:  0.73%
12:  0.26%
13:  0.10%
14:  0.37%
15:  0.00%
16:  0.37%
17:  0.10%
18:  1.15%
19:  3.51%
20:  2.51%
21: 10.99%
22:  5.49%
23: 10.78%

自分でも意識していなかったのですが、約 6 割が 0 時台に更新されていることがわかります。

CUI でのグラフによる可視化は有効なので、別途グラフ化の部分は何か書くかもしれません。

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png