[CLUE-Tech] Re: removing spaces from filenames

Angelo Bertolli angelo at freeshell.org
Thu May 20 22:26:28 MDT 2004


This looks pretty cool, can I pipe find through it instead of ls?  As it 
turns out some directories have spaces too...

Angelo

Jed S. Baer wrote:

>On Wed, 19 May 2004 22:48:08 -0400
>Angelo Bertolli <angelo at freeshell.org> wrote:
>
>  
>
>>The command rename will do this for the first occurence, maybe 10 passes
>>is enough...
>>
>>    
>>
>>>"Joe 'Zonker' Brockmeier" <jzb at dissociatedpress.net> wrote:
>>>
>>>      
>>>
>>>>I think Jed may have been referring to this, but there are a number of
>>>>variations on rename.pl (just do a Google search) that are insanely 
>>>>useful for removing spaces from filenames -- I use that quite often
>>>>        
>>>>
>>>for >"fixing" multiple files created by other folks on Windows.
>>>      
>>>
>>>No, I just rolled my own. I'll check on that one though. It's possible
>>>it's even better.
>>>      
>>>
>
>FWIW, try this
>
> -- fixdosnames.pl --
>
>#!/usr/bin/perl -w
>
>sub fixnames {
>
>  shift;
>
># get rid of URL-encoded characters
>
>  s/\%[0-9]{2}/_/g;
>
># convert to lower, and get rid of punctuation marks
>
>  tr/A-Z/a-z/;
>  tr' -~!@#$%^&*(){}|\":;?<>,[]+='_'s;
>  tr/'/_/s;
>
>  s/_+/_/g;
>  s/^_+//g;
>
>  return $_
>}
>
>while (<>) {
>
>  chomp;
>  $oldname = $_;
>  $newname = fixnames($oldname);
>
>  if ($oldname ne $newname) {
>    print "mv -- $oldname $newname\n";
>    @sargs = ("mv", "--", "$oldname", "$newname");
>    system(@sargs) == 0 or print
>      "unable to move file $oldname: $?\n";
>  }
>
>}
>
>usage: ls | fixdosnames.pl
>
>Comment out the print statement if you don't want to see what's
>happenning. The reason for the "--" option to mv is that I ran across some
>files where the first character was a dash, so without the "--" option, mv
>was treating the filename as an invalid argument.
>
>jed
>  
>





More information about the clue-tech mailing list