a little help with removing spaces from filenames

Michael Wittman plug-discuss@lists.plug.phoenix.az.us
Thu, 8 Aug 2002 23:09:49 -0700


--PNTmBPCT7hxwcZjr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Wed, Aug 07, 2002 at 10:49:32PM -0700, technomage wrote:
> ok,
> I've read and I've read, but can't seem to come up with a solution that isn't 
> overly complex.
> I want t take spaces in filenames and rename them with underscores "_" and 
> would like to do so a directory at a time if need be.
> 
> any help would be appreciated

Save the attached perl script, make it executable, and issue the command
	./rename 's/ /_/g' file(s)
e.g.
	./rename 's/ /_/g' *.mp3

The script applies the operation in the first argument to the file
names and renames them if a different name is produced.  This is what
I use any time I need to rename multiple files in a consistent way.
You can use any valid perl expression for the first argument, so it's
pretty powerful.  For example, you can do things like:

convert filenames to lowercase
	./rename 'tr/A-Z/a-z/' file(s)

capitalize every word in the file names specified
	./rename 's/\b(\w)(\w*)/uc($1).lc($2)/eg' file(s)

-Mike

--PNTmBPCT7hxwcZjr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=rename

#!/usr/bin/perl
$op = shift;
for (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
}

--PNTmBPCT7hxwcZjr--