TCLUG Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [TCLUG:18790] quick way to strip spaces...



My own 'untested' answer to the 'riddle'

perl -e 'opendir D, "."; for(readdir D) {$x=$_; s/\s+/_/g;
s/[\[\]()<>{},~]/_/g; s/MP3/mp3/g; rename $x, $_; chmod 0655 $x}'

dunno if that would work at all...but it seems it might...

> From: Brian Ackermann <brian_ackermann@bbros.com>
> Reply-To: tclug-list@mn-linux.org
> Date: Thu, 15 Jun 2000 10:17:22 -0500
> To: <tclug-list@mn-linux.org>
> Subject: Re: [TCLUG:18790] quick way to strip spaces...
> 
> Ok, this one should maybe be a bit of a brain teaser for some of you out
> there...I don't actually NEED the answer to the question below, I just
> thought some of you might like to stretch your perl muscles a little
> bit...then again, for as much as I know about perl, its probably trivial...!
> 
> for that same directory, I want to strip out all spaces, brackets of any
> kind, commas and tildes, change all .MP3 extensions to .mp3, and run a chmod
> 0655 on the bunch as well....can all this be done as part of the same perl
> statement, and what would it look like.
> 
> Would it be better at this point to actually make a perl script to do it
> all, instead of just continuously typing in that long line of code again and
> again(say once every week or so...)
> 
>> From: Brian Ackermann <brian_ackermann@bbros.com>
>> Reply-To: tclug-list@mn-linux.org
>> Date: Thu, 15 Jun 2000 09:55:03 -0500
>> To: <tclug-list@mn-linux.org>
>> Subject: Re: [TCLUG:18790] quick way to strip spaces...
>> 
>> perl -e 'opendir D, "."; for(readdir D) {$x=$_; s/[(,)]/_/g; rename $x,
>> $_;}'
>> 
>> That did the trick perfectly!!  (I also had some commas to remove, so I
>> added that bit in as well...)
>> 
>>> From: Troy Johnson <john1536@tc.umn.edu>
>>> Reply-To: tclug-list@mn-linux.org
>>> Date: Wed, 14 Jun 2000 17:05:17 -0500
>>> To: tclug-list@mn-linux.org
>>> Subject: Re: [TCLUG:18790] quick way to strip spaces...
>>> 
>>> Brian Ackermann wrote:
>>>>> From: "Eric Hillman" <ehillman@cccu.com>
>>>>> 
>>>>> perl -e 'opendir D, "."; for(readdir D) {$x=$_; s/\s+/_/g; rename $x,
>>>>> $_;}'
>>>> 
>>>> However, I'm wondering if you could explain this bit for me...
>>>> {$x=$_; s/\s+/_/g; rename $x, $_;}
>>>> I also am going to need to strip out '(' and ')', and I'm not seeing how to
>>>> do that.
>>> 
>>> {$x=$_; s/\s+/_/g; s/[()]//g; rename $x, $_;}
>>> 
>>> The semicolons (';') here separate single statements.
>>> 
>>> The '$_' variable is a special default variable for loops. When 'readdir
>>> D' produces a list of files names, the 'for' loop sends them one at a
>>> time throught the loop and assigns the file name to the $_ variable.
>>> '$x' here is just a variable to store the old file name for use in the
>>> 'rename' function.
>>> 
>>> The regular expression substitutions ('s/../../g') can be used to work
>>> on variables ('$n =~ s/1/2/g; # replace ones with twos in n'), but when
>>> no variable is given, the substitution works on the default '$_'
>>> variable instead.
>>> 
>>> The 's/[()]//g' part is a substitution ('s') and it is global ('g'). The
>>> '/' characters separate: the regular expression type or function ('s'),
>>> what is matched ('[()]'), what replaces a match ('' or nothing), and the
>>> options ('g'). The '[' and ']' delimit a set of characters to be
>>> matched, and this one will match a '(' charcter or a ')' character. The
>>> global ('g') option means it can match more than once per line or input
>>> chunk.
>>> 
>>> Sorry if that seems to simplistic or complicated. I am just practicing
>>> my written English. ;-)
>>> 
>>> Good luck, and get "Learning Perl" or "Programming Perl". You will not
>>> regret it,
>>> 
>>> Troy
>>> 
>>> -- 
>>> Troy Johnson   mailto:john1536@tc.umn.edu   http://umn.edu/~john1536/
>>> Question with boldness even the existence of a God; because, if there
>>> be one, he must more approve the homage of reason, than that of
>>> blindfolded fear.... Do not be frightened from this inquiry from any
>>> fear of its consequences. If it ends in the belief that there is no
>>> God, you will find incitements to virtue in the comfort and
>>> pleasantness you feel in its exercise...
>>> -- Thomas Jefferson, in a 1787 letter to his nephew
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: tclug-list-unsubscribe@mn-linux.org
>>> For additional commands, e-mail: tclug-list-help@mn-linux.org
>>> 
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tclug-list-unsubscribe@mn-linux.org
>> For additional commands, e-mail: tclug-list-help@mn-linux.org
>> 
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tclug-list-unsubscribe@mn-linux.org
> For additional commands, e-mail: tclug-list-help@mn-linux.org
> 
>