何時毎にファイルを編集しているか集計する
何時ごろにファイルを編集することが多い? - みずぴー日記にインスパイヤーされて同様の集計をしてみました。 ただし、グラフで表すのではなく、百分率で表示します。 ファイルの更新日時を取得するのは、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 でのグラフによる可視化は有効なので、別途グラフ化の部分は何か書くかもしれません。




