[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: File renaming using SED in BASH
From: |
Chris F.A. Johnson |
Subject: |
Re: File renaming using SED in BASH |
Date: |
Sun, 21 Sep 2008 23:55:04 +0000 |
User-agent: |
slrn/0.9.8.1 (Linux) |
On 2008-09-21, MisterMuv wrote:
>
> Hi,
>
> I am having a problem renaming a files using SED.
>
> The filenames are in the following format: eg
>
> 001 - GreatPics1 (The Opening) (www.somewhere.net).jpg
> 002 - GreatPics2 (The Closing) (www.somewhere.net).jpg
> 003 - GreatPics3 (The Ending) (www.somewhere.net).jpg
>
> I am wanting to remove contents of the second parenthesis, i.e.
> "(www.somewhere.net)".
>
> So the files would end up like:
>
> 001 - GreatPics1 (The Opening) .jpg
> 002 - GreatPics2 (The Closing) .jpg
> 003 - GreatPics3 (The Ending) .jpg
>
> This is what I have so far.
>
> If I use this to test all is well
>
> for f in *
> do
> echo $f |sed 's:(www.somewhere.net)::'
> done
>
> However when I incorporate the mv command all isn't well.
>
> for f in *
> do
> chg=echo $f |sed 's:(www.somewhere.net)::'
That assigns echo to $chg and tries to execute $f. Use command
substitution.
> mv $f $chg
> done
for f in *
do
chg=$( echo "$f" | sed 's:(www.somewhere.net)::' )
mv "$f" "$chg"
done
--
Chris F.A. Johnson, webmaster <http://Woodbine-Gerrard.com>
===================================================================
Author:
Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)