#!/usr/bin/perl -w use strict; use POSIX; my %seen; while (<*.gz>){ my $date = strftime "%Y%m%d", localtime((lstat($_))[9]); my $was = $_; s/\d+/$date/; die "File '$_' already exists!\n" if -f $_; die "We already have a file with that date ($date).\n" if $seen{$_}; $seen{$_} = $was; } for my $fn (sort keys %seen){ rename $seen{$fn}, $fn; print "$fn\n"; }