Martin Fluch <[EMAIL PROTECTED]> wrote:
>On Sat, 11 Nov 2000 [EMAIL PROTECTED] wrote:
>> I have a bunch of files I want to rename from .html to .htm. Is there
>> I way to rename them all at once?
>
>A little bit bash programming...
>
>for $i in *.html ; do mv "$i" "${i:0:${#tmp}-1}" ; done
>
>Yes, I know, that this is quite cryptic ... but unfortunately I'm to tired
>to explain it ... I've need some sleep :-)

Did you mean "${i:0:${#i}-1}"? That's $i with a substring operation to
trim off the last character (${#i} is the length of $i).

Personally, I think that "${i/%.html/.htm}" is a bit more obvious, and
probably easier to extend to other situations too. You could also try
the basename trick:

  for $i in *.html; do mv $i `basename $i .html`.htm; done

... or, if you might have spaces in the filenames:

  for $i in *.html; do mv "$i" "`basename '$i' .html`.htm"; done

Note the careful quoting here. :)

-- 
Colin Watson                                     [EMAIL PROTECTED]

Reply via email to