sshで入れないサーバで、一定期間以内に更新されているファイルリストが欲しかったので作った。
#!/usr/bin/perl use strict; use File::Find; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/plain\n\n"; my $time = time; my $elapsed_days = 40; find(\&func, "/target_directory"); sub func { my $mtime = (stat($File::Find::name))[9]; if ($time - $mtime <= $elapsed_days * 86400) { printf("%s (%s)\n", $File::Find::name, get_datetime($mtime)); } } sub get_datetime { my($time) = @_; my($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($time); sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, ++$mon, $mday, $hour, $min, $sec); }
出力のタイムスタンプはおまけ。 findコマンドと比べたらとても重いと思うが目的は達せた。TMTOWTDI:-)