atime/mtimeが当月1日から今日までのファイルを生成するワンライナー
logrotate のテストのため、過去のテストファイルを生成する必要があったのでメモ。
touch コマンドで日時(atime/mtime)を指定してファイルを生成します。
% DAY=$(date +%d);for i in $(seq -w 01 $DAY);do ;touch -d "$(date +%Y/%m)/$i 04:00:00" test.$(date +%Y%m)$i.log ;done; %ls -l test.* -rw-r--r-- 1 kmn23 kmn23 0 Jan 1 04:00 test.20150101.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 2 04:00 test.20150102.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 3 04:00 test.20150103.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 4 04:00 test.20150104.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 5 04:00 test.20150105.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 6 04:00 test.20150106.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 7 04:00 test.20150107.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 8 04:00 test.20150108.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 9 04:00 test.20150109.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 10 04:00 test.20150110.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 11 04:00 test.20150111.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 12 04:00 test.20150112.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 13 04:00 test.20150113.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 14 04:00 test.20150114.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 15 04:00 test.20150115.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 16 04:00 test.20150116.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 17 04:00 test.20150117.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 18 04:00 test.20150118.log -rw-r--r-- 1 kmn23 kmn23 0 Jan 19 04:00 test.20150119.log
ctime は現在の時刻に設定する事はできるが、過去や未来の時間に設定する事はできない。
( ファイルシステムを直接いじれば、その限りではないだろうが...)
参考
http://keyamb.hatenablog.com/entry/2012/09/25/210432
http://x68000.q-e-d.net/~68user/unix/pickup?%A5%BF%A5%A4%A5%E0%A5%B9%A5%BF%A5%F3%A5%D7
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230905/