#!/bin/sh #this script prints three tables which show you how many files were #most recently modified for each year, year-mo, and on by day: #stu@sente ~ $ bash count-by-date.sh public_html/tmp #year: 2010 6 #year: 2009 2 #year: 2008 1 #month: 2010/03 3 #month: 2010/01 3 #month: 2009/10 1 #month: 2009/01 1 #month: 2008/04 1 #day: 2010/03/01 3 #day: 2010/01/28 3 #day: 2009/10/16 1 #day: 2009/01/05 1 #day: 2008/04/14 1 find "$@" -maxdepth 1 -printf "%TY|%TY/%Tm|%TY/%Tm/%Td|%f\n" | awk ' BEGIN{ FS="|"; OFS="\t" } { year[$1]++ month[$2]++ day[$3]++ } END{ #how can I avoid using three nearly identical loops? for(i in year) {print "year:", i, year[i] } for(i in month) {print "month:", i, month[i] } for(i in day) {print "day:", i, day[i] } }' |sort -r