#!/usr/bin/perl -w use strict; use File::stat; use POSIX qw(strftime); my $maillog_dir = '/var/log/maillogs'; opendir ( LOG, $maillog_dir) or die ("Can't open $maillog_dir: $!"); my @list = sort { -M "$maillog_dir/$a" <=> -M "$maillog_dir/$b" } grep { -f "$maillog_dir/$_" } readdir ( LOG ); foreach my $file ( @list ){ my $datestamp = strftime("%Y%m%d", localtime(stat("$maillog_dir/$file")->mtime)); $file =~ s/\d+/$datestamp/; print "$file\n"; } close ( LOG );