Bash Help: Renaming all files in a Directory
Robin Laing
Robin.Laing at drdc-rddc.gc.ca
Mon Jul 24 15:31:22 UTC 2006
Steven W. Orr wrote:
> On Friday, Jul 21st 2006 at 19:27 -0400, quoth Thom Paine:
>
> =>I'm making a digital picture frame out of an old laptop and the pic
> =>viewer doesn't support filenames with spaces in them.
> =>
> =>Is there a quick command I can type to process all files in a
> =>directory that will rename the files from "Family Pic 001.jpg" to
> =>"FamilyPic001.jpg"?
>
> You've gotten a lot of bash suggestions, ranging from the sublime to the
> absurd. Here's my fave:
>
> 514 > cat ~/bin/rename
> #!/usr/bin/perl
> $op = shift;
> for (@ARGV) {
> $was = $_;
> eval $op;
> die $@ if $@;
> rename($was,$_) unless $was eq $_;
> }
> 515 >
>
> Since it uses perl, you can do regex magic plus more. Your problem would
> be solved with
>
> rename 's/ //g' *.jpg
>
> but you can also play games like
>
> rename 'tr/A-Z/a-z/' *.jpg to flip things to lowercase.
>
> Enjoy.
>
You beat me to the perl script.
I have been using a form of this script for years. I put it in my
personal bin directory and it is so powerful.
The only caution is it will overwrite files that already exist so you
have to be careful.
--
Robin Laing
More information about the users
mailing list