# HG changeset patch # User Edho Arief # Date 1344756461 -25200 # Node ID 6a62f8641c4fc647ab3a2f73a523178206053825 # Parent c555557692bcdcb2b1f9db637129443425a48d20# Parent f6d29c03142fd6a3897b79f583aca547fa4bd26e Merge branch 'master' of http://github.com/edogawaconan/ecos diff -r c555557692bc -r 6a62f8641c4f bin/prename --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/prename Sun Aug 12 14:27:41 2012 +0700 @@ -0,0 +1,144 @@ +#!/usr/bin/perl -w +# +# This script was developed by Robin Barker (Robin.Barker@npl.co.uk), +# from Larry Wall's original script eg/rename from the perl source. +# +# This script is free software; you can redistribute it and/or modify it +# under the same terms as Perl itself. +# +# Larry(?)'s RCS header: +# RCSfile: rename,v Revision: 4.1 Date: 92/08/07 17:20:30 +# +# $RCSfile: rename,v $$Revision: 1.5 $$Date: 1998/12/18 16:16:31 $ +# +# $Log: rename,v $ +# Revision 1.5 1998/12/18 16:16:31 rmb1 +# moved to perl/source +# changed man documentation to POD +# +# Revision 1.4 1997/02/27 17:19:26 rmb1 +# corrected usage string +# +# Revision 1.3 1997/02/27 16:39:07 rmb1 +# added -v +# +# Revision 1.2 1997/02/27 16:15:40 rmb1 +# *** empty log message *** +# +# Revision 1.1 1997/02/27 15:48:51 rmb1 +# Initial revision +# + +use strict; + +use Getopt::Long; +Getopt::Long::Configure('bundling'); + +my ($verbose, $no_act, $force, $op); + +die "Usage: rename [-v] [-n] [-f] perlexpr [filenames]\n" + unless GetOptions( + 'v|verbose' => \$verbose, + 'n|no-act' => \$no_act, + 'f|force' => \$force, + ) and $op = shift; + +$verbose++ if $no_act; + +if (!@ARGV) { + print "reading filenames from STDIN\n" if $verbose; + @ARGV = ; + chop(@ARGV); +} + +for (@ARGV) { + my $was = $_; + eval $op; + die $@ if $@; + next if $was eq $_; # ignore quietly + if (-e $_ and !$force) + { + warn "$was not renamed: $_ already exists\n"; + } + elsif ($no_act or rename $was, $_) + { + print "$was renamed as $_\n" if $verbose; + } + else + { + warn "Can't rename $was $_: $!\n"; + } +} + +__END__ + +=head1 NAME + +rename - renames multiple files + +=head1 SYNOPSIS + +B S<[ B<-v> ]> S<[ B<-n> ]> S<[ B<-f> ]> I S<[ I ]> + +=head1 DESCRIPTION + +C +renames the filenames supplied according to the rule specified as the +first argument. +The I +argument is a Perl expression which is expected to modify the C<$_> +string in Perl for at least some of the filenames specified. +If a given filename is not modified by the expression, it will not be +renamed. +If no filenames are given on the command line, filenames will be read +via standard input. + +For example, to rename all files matching C<*.bak> to strip the extension, +you might say + + rename 's/\.bak$//' *.bak + +To translate uppercase names to lower, you'd use + + rename 'y/A-Z/a-z/' * + +=head1 OPTIONS + +=over 8 + +=item B<-v>, B<--verbose> + +Verbose: print names of files successfully renamed. + +=item B<-n>, B<--no-act> + +No Action: show what files would have been renamed. + +=item B<-f>, B<--force> + +Force: overwrite existing files. + +=back + +=head1 ENVIRONMENT + +No environment variables are used. + +=head1 AUTHOR + +Larry Wall + +=head1 SEE ALSO + +mv(1), perl(1) + +=head1 DIAGNOSTICS + +If you give an invalid Perl expression you'll get a syntax error. + +=head1 BUGS + +The original C did not check for the existence of target filenames, +so had to be used with care. I hope I've fixed that (Robin Barker). + +=cut