指定した日に更新されたファイルを探す

いつもの通り、OSはSolaris 9 です。
Linuxではlsコマンドに「--full-time」というオプションがあるが、Solaris標準のlsにはない。また、findの「-mtime」オプションで探そうにも、2008年1月1日が何日前なのか知らないと使えない。そして、Solarisにはstatコマンドが無い。なので、perlスクリプトを書いて見ました。

<stat.pl>

#!/usr/bin/perl
$date = "$ARGV[0]";
$file = "$ARGV[1]";
@stat = stat $file;
($sec,$min,$hour,$mday,$mon,$year) = localtime($stat[9]);
$mon++;
$year+=1900;
if($date == sprintf("%4d%02d%02d"), $year, $mon, $mday)){
    printf("%s\n", $file);
}

見苦しいところはご愛嬌。これを使うには、こんな感じかな。

$ find /tmp -type f -exec stat.pl 20080101 {} \;

こうすると、2008年1月1日に更新されたファイルの一覧が出せる。