Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- use strict;
- use warnings;
- use Encode;
- binmode STDOUT, ":utf8";
- binmode STDIN, ":utf8";
- binmode STDERR, ":utf8";
- #use Cwd;
- #my $dir = getcwd();
- my ($pat, $what, $to, $cmd) = @ARGV;
- my $ln = 0;
- $to = '"'.$to.'"';
- my $myname = $0;
- $myname =~ s/\.\///;
- if ( !$pat or !$what or !$to or !$cmd )
- {
- my $me = $myname;
- $me =~ s/^.*\///;
- die 'Usage: ' . $me . ' {filename pattern} {what replace} {replace to} {command to exec}' . "\n"
- . 'Hint in {replace to} you can use $fn. It\'l be replaced by number of file. Files sorted by name in alphabetical order' . "\n"
- .'for example: #> '. $me . ' \'*.c\' \'\w\.\' \'e_$fn\.\' cp' . "\n";
- }
- my @old = ();
- my @new = ();
- # opendir(DIR,$dir);
- # my @files = readdir(DIR);
- # closedir(DIR);
- my @files = glob($pat);
- foreach my $fname (@files) {
- if ( $fname =~ m/$myname$/ ) { next; }
- $fname =~ s/\s+$//;
- my $nto = eval($to);
- my $nfname = $fname;
- $nfname =~ s/$what/$nto/;
- if ( $fname ne $nfname )
- {
- push( @old, $fname );
- push( @new, $nfname );
- }
- $ln += 1;
- }
- print "Now we will exec: " . $cmd . " " . $old[0] . " " . $new[0] . "\nIs it OK(yes/no)?\n";
- my $answer = <STDIN>;
- if ( $answer eq "yes" )
- {
- for (my $i = 0; $i < ($#old + 1); $i++) {
- system($cmd, $old[$i], $new[$i]);
- }
- }
- else
- {
- print "[Canceled]\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment