On Mon, Dec 09, 2002 at 11:33:03PM -0800, Osamu Aoki scribbled... > On Mon, Dec 09, 2002 at 10:02:25PM -0600, Shyamal Prasad wrote: > > "drew" == drew cohan <[EMAIL PROTECTED]> writes: > > > > drew> How do I rename all files in a directory matching the > > drew> pattern *.JPG to *.jpg in a bash shell script? Thanks to > > drew> you guys I can check for the existence of jpgs in a > > drew> directory, but can't seem get 'mv' to rename them for me > > drew> (always complains that the last argument must be a > > drew> directory). > > > > Still another way: > > > > for i in *.JPG > > do > > mv $i `basename $i .JPG`.jpg > > done > > Simplest alternative without sub-shell nor special command: > > for i in *.JPG > do > mv $i ${i%\.JPG}.jpg > done > My way:
<perl.mmv> #!/usr/bin/perl -w ################################################################################ # mmv # Renames files based on regex patterns. ################################################################################ use Getopt::Std; getopts("tv"); die "bad usage\n" unless (@ARGV > 2); my ($p1, $p2) = @ARGV; $opt_t = 1 if defined $opt_t; $opt_v = 1 if defined $opt_v; my $newFile; foreach my $file (@ARGV) { if ($file =~ m#$p1#) { $newFile = $file; $newFile =~ s/$p1/$p2/; print "Move '$file' to '$newFile'\n" if ($opt_t or $opt_v); rename $file, $newFile unless ($opt_t); } } -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]