Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.71 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use File::Find;
  4.  
  5. finddepth (\&recursive, "./");
  6.  
  7. sub recursive {
  8.     push @path, "$File::Find::dir/";
  9.     push @files, $_;
  10. }
  11.  
  12. @files = File::Spec->no_upwards( @files );
  13. foreach my $file (@files) {
  14.     my (@parts, @name);
  15.     push @name, split(/\./,$file);
  16.     foreach my $piece (@name) {
  17.         if ($piece =~ /[[:alpha:]]/ && $piece =~ /[[:digit:]]/) {
  18.             push @parts, $piece;
  19.         } else {
  20.             push @parts, substr $piece, 0, 1;
  21.         }
  22.     }
  23.     push @newname, join('.',@parts);
  24.    
  25. }
  26.  
  27. pop @path;
  28.  
  29. %h = ();
  30. @newname = map { s/(\d*)$/$1 + 1/e while $h{$_}; $h{$_}++; $_ } @newname;
  31.  
  32. while ( @files and @newname ) { rename shift @files, shift @newname }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement