ファイルの修正日時
Unix系のファイルシステムではctime, mtime, atimeと呼ばれる3種類の時刻がファイルに関連付けられている.それぞれファイルの作成 (create) 日時,最終修正 (modify) 日時,最終アクセス (access) 日時だ.mtimeとatimeの違いは「ファイルに『上書き』をしたときは両者とも更新されるが,ファイルを読み込んだだけのときは後者のみが更新される」点だ*1.普通ls -lで表示される時刻はmtimeだ(無難な選択と言える). ctimeは変更できないが,mtimeとatimeは utime(2) というsyscallで変更できる.これは time_t を引数に取る使い辛いsyscallだが*2,Perl, RubyやPythonが同名のラッパ手続きを提供しているのでそちらを使えばよい.
id:flappphys:20050110#p01 で言及したMailmanのbin/archでメールアーカイヴのHTML化をやり直したら,それらに対しNamazuの「新しい順」検索が効かなくなっていた.何しろHTMLファイルが全部同時刻になっていたから.そこでHTMLファイルのmtimeをその中に書かれているメールの送信時刻へと修正するツールをRubyで書いた.簡単だった.