#!/usr/bin/perl -w
#
# Name: ren-multi-files
#     searchstring: /${pattern}/
#     adds $left-pattern to the beginning of $pattern
# renames multiple files by batch
# remark "./" at the beginnig of the produced command for mv because of the dash of the filename, interpreted as option by mv
# writes batch to STDOUT
# 
# by Gerd Hoffmann (C)
#
# 130716

use strict;

my ( $dir_up, $i, $name, $newname, @dirlist ) ;

# get name of upper dir
$_= `pwd` ;
m#.*/(.*?)$# ;
$dir_up=$1 ;

my $left_pattern = "e-";
# my $left_pattern = "$dir_up-" ;
# my $left_pattern = "k-";
my $dir = "./"  ;
# my $dir = ""  ;
my $pattern = ".*" ;
#my $pattern = "\.JPG" ;

opendir(DIR, $dir) || die "no $dir?: $!";
while ( $name = readdir(DIR) ) { # scalar context, one each loop
      if( $name =~ /${pattern}/) {
         if ( $name =~ m#^\.+?$# ) { next; }  # exclude . and ..
         $newname = "$left_pattern$name" ;
#         $name="\"$name\""; # perhaps it will also work without this line ?
         print "mv ./$name $newname\n";      
      }
}


__END__


opendir(DIR, $dir) || die "kein $dir?: $!";
foreach  $name (sort (readdir(DIR)) ) {
   (@dirlist) = (@dirlist,$name);
#   print "$name\n"; 
}
closedir(DIR);




# mit printf formatierte Liste, numeriert
print "\nContent of directory $dir:\n\n"; 
for ($i = 0; $i <= $#dirlist; $i++,$i++) {
   printf"  %s%3s  %25s      %s%3s   %25s\n", 
              ( -d $dirlist[$i] ) ? '*' : " ",
              $i+1, 
              $dirlist[$i], 
              ( (defined($dirlist[$i+1])) && ( -d $dirlist[$i+1] ) ? '*' : " " ),
              ( defined($dirlist[$i+1]) ? $i+2 : "" ),
              ( defined($dirlist[$i+1]) ? $dirlist[$i+1] : "" ) ;
}

############# mit format
#for ($i = 0; $i <= $#dirlist; $i++) {
#   write STDOUT;
#}

#format STDOUT =
#   @##   @<<<<<<<<<<<<<<<<<<<      @##   @<<<<<<<<<<<<<<<<<<<  
#   $i+++1, $dirlist[$i-1],         $i+1, $dirlist[$i]
#.


