[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