Bash Help: Renaming all files in a Directory

Steven W. Orr steveo at syslang.net
Sat Jul 22 02:10:07 UTC 2006


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.

-- 
Time flies like the wind. Fruit flies like a banana. Stranger things have  .0.
happened but none stranger than this. Does your driver's license say Organ ..0
Donor?Black holes are where God divided by zero. Listen to me! We are all- 000
individuals! What if this weren't a hypothetical question?
steveo at syslang.net




More information about the fedora-list mailing list