On Sun, Dec 13, 2009 at 04:36:47PM +1100, david wrote:

> $ for i in *.tif ; convert $i $i.jpg; done
> $ for i in $i.jpg ; do mv $i `echo $i | sed s/.tif//`; done
>
> Apart from specific examples, where do I look in the bash book for a better
> way to remove the <.tif> part of the output filename, or other such
> substitutions?

See the section called EXPANSION, and in particular, Parameter
Expansion.   The one you want is:

    ${parameter/pattern/string}
        The pattern is expanded to produce a pattern just as in pathname
        expansion.  Parameter is  expanded  and  the longest match of
        pattern against its value is replaced with string.  If Ipattern
        begins with /, all matches of pattern are  replaced  with
        string.   Normally  only the first match is replaced.  If
        ...

To remove ".tif" from $i in your second loop, use ${i/.tif/}.  To run
convert and set the correct outout filename as the same time, you can do
this:

    $ for i in *.tif ; convert $i ${i/%.tif/.jpg}; done



John
-- 
We Europeans tend to prefer our cars like our women: small, curvy,
responsive and not too thirsty. If North Americans prefer Eastern Block
female shot-putters with advanced alcoholism, well, it takes all types.
            -- Alan Bellingham
-- 
SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html

Reply via email to