Blog
Date Rename
This perl program renumbers files by their creation date. Possible arguments are file-extension and basename.
Examples:
- daterename -e jpg -n "pic\_"
- daterename -e jpg -n ""
Here is the code:
#!/usr/bin/perl -w
use Cwd;
use strict;
use warnings;
sub daterename($$)
{
my $type = shift;
my $name = shift;
my $path = getcwd();
my %fhash;
my $muster = $path."/*.".$type;
my @globbing = glob($muster);
my $glength = @globbing;
unless ($glength == 0)
{
foreach my $filename (@globbing)
{
my @a = stat($filename);
$fhash{"$filename"} = $a[9];
}
my $index = 1;
foreach my $file
(
sort{$fhash{$a} cmp $fhash{$b}}
keys %fhash
)
{
print "rename $file\t to $name$index\n";
rename($file, $name.$index.".".$type);
$index++;
}
}
else
{
print "Nothing to do\n";
}
}
sub help()
{
print "usage of daterename:\n";
print " required parameters:\n";
print " -n basename of the files\n";
print " -e file-extension (like jpg...)\n";
print " optional parameters:\n";
print " none at the moment\n";
}
my $type = "null";
my $name = "null";
my $l = @ARGV;
for(my $i = 0; $i < $l ; $i++)
{
if($ARGV[$i] =~ /^-n$/)
{
if(defined $ARGV[$i+1])
{
$name = $ARGV[$i+1];
$i++;
}
else
{
help();
last;
}
}
elsif($ARGV[$i] =~ /^-e$/)
{
if(defined $ARGV[$i+1])
{
$type = $ARGV[$i+1];
$i++;
}
else
{
help();
last;
}
}
}
if($type ne "null" and $name ne "null")
{
daterename($type,$name);
}
else
{
help();
}