Advertisement
overloop

safe_move.pl

Oct 14th, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.07 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use File::Copy;
  4.  
  5. sub readAll {
  6.     my ($file) = @_;
  7.     open INPUT,'<',$file;
  8.     my @lines = <INPUT>;
  9.     close INPUT;
  10.     return @lines;
  11. }
  12.  
  13. sub myBase {
  14.     my ($path) = @_;
  15.     if ($path =~ /(.*)\/(.*)/) {
  16.         $path = $2;
  17.     } else {
  18.         print STDERR "myBase error: path with no slashes\n";
  19.         exit(1);
  20.     }
  21.     return $path;
  22. }
  23.  
  24. sub myDir {
  25.     my ($path) = @_;
  26.     if ($path =~ /(.*)\/(.*)/) {
  27.         $path = $1;
  28.     } else {
  29.         print STDERR "myDir error: path with no slashes\n";
  30.         exit(1);
  31.     }
  32.     return $path;
  33. }
  34.  
  35. sub fixLocal {
  36.     my ($path) = @_;
  37.     if ($path =~ /(.*)\/(.*)/) {
  38.        
  39.     } else {
  40.         $path = "./" . $path;
  41.     }
  42.     return $path;
  43. }
  44.  
  45. sub incSuffix {
  46.     my ($path) = @_;
  47.     $dir = myDir $path;
  48.     $base = myBase $path;
  49.    
  50.     my $basebase;
  51.     my $suffix;
  52.     my $ext;
  53.    
  54.     if ($base =~ /(.*)_([0-9]*)(\..{1,5})/) {
  55.         $basebase = $1;
  56.         $suffix = $2;
  57.         $ext = $3;
  58.     } elsif ($base =~ /(.*)_([0-9]*)/){
  59.         $basebase = $1;
  60.         $suffix = $2;
  61.         $ext = "";
  62.     } elsif ($base =~ /(.*)(\..{1,5})/) {
  63.         $basebase = $1;
  64.         $suffix = 0;
  65.         $ext = $2;
  66.     } else {
  67.         $basebase = $base;
  68.         $suffix = 0;
  69.         $ext = "";
  70.     }
  71.    
  72.     $path = $dir . "/" . $basebase . "_" . ($suffix+1) . $ext;
  73.    
  74.     return $path;
  75. }
  76.  
  77. #my @samples = ('foo/bar/meh','foo/bar/meh_1','foo/bar/meh_3.pdf','foo/bar/meh.pdf');
  78. #for my $sample (@samples) {
  79. #   print $sample . " dir: " . myDir($sample) . " base: " . myBase($sample) . " incSuffix: " . incSuffix($sample) . "\n";
  80. #}
  81. #exit(0);
  82.  
  83. sub safeMove {
  84.     my ($src,$dst) = @_;
  85.     $src = fixLocal $src;
  86.     $dst = fixLocal $dst;
  87.     if ( -f $src ) {
  88.         if ( -d $dst ) {
  89.             $dst = $dst . "/" . myBase($src);
  90.         }
  91.         while ( -f $dst ) {
  92.             $dst = incSuffix $dst;
  93.         }
  94.         print STDERR $src . " -> " . $dst . "\n";
  95.         move($src,$dst) or print STDERR "move error: " . $! . "\n";
  96.     } else {
  97.         print STDERR "error src not exist: " . $src . "\n";
  98.     }
  99. }
  100.  
  101. my ($file) = @ARGV;
  102. my @lines = readAll $file;
  103. for my $line (@lines) {
  104.     chomp($line);
  105.     if ($line =~ /(.*)\t(.*)/) {
  106.         my $src = $1;
  107.         my $dst = $2;
  108.         safeMove $src,$dst;
  109.     } else {
  110.         print STDERR "wrong format: " . $line . "\n";
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement