如何批量修改文件的扩展名?

rename 似乎就是个perl脚本吧
[code:1]
#!/bin/bash
# written by tears
# tears@mail.qgzxol.com
# 2004-08-17

if [ $# -lt 2 ]; then
    echo "Usage: `basename $0` str1 str2 str3 ... strlast"  >&2
    exit 1
fi

for last in $@
do
    :
done

for i in $@
do
    if [ "$i" = "$last" ]; then
        continue
    fi

    for n in *
    do
        if [ -d $n ]; then
            continue
        fi
       
        file_basename=${n%%.$i}
        if [ "$file_basename" != "$n" ]; then
            echo "$n -> ${file_basename}.$last"
            mv "$n" "${file_basename}.$last"
        fi
    done
done   
[/code:1]

rename Html HTML html
可以把目录下所有扩展名为Html HTML的文件更改为html
實用
顶...
我怎么发觉在用rename时还是存在很大局限性:
   
1.我的系统(RH ES3.0)在使用rename .htm .html *.htm  时得到的不是htm,而是html。
2.现有三个文件:1.c、2.doc、3.txt,我用rename .c .doc .txt *.c 得到的却是:
1.doc  2.doc  3.txt
这与我要求的.c的后缀相差甚远!

反复实验,我发现在我的系统中,用rename好像并不能实现“批量修改文件的扩展名”的功能。
1.不能批量修改,如上所示。
2.在修改时甚至与文件的排列次序有关:如果文件为:
1.html   2.htm  3.htm
在用rename .htm .html *.htm时它会报告
rename: renaming *.htm to *.html failed: 没有那个文件或目录
如果文件为:
1.htm   2.html  3.html
则得到的是:
1.html   2.html  3.html
.........................
反正结果千奇白怪!!!
请问这是怎么回事???   
因为我红帽的用的比较少。这些功能跟红旗的一样吗?
还是仔细看看man rename吧
rename {source pattern} {dest pattern} {source file}
你提问前MAN一下好不好啊:)
[root@RH9 etc]#rename .conf .ini *.conf

如果文件没有后缀的话,用什么命令批量改名呢?
你man 下rename嘛!也许语法有点不同吧!我也用ES 3不过没试过!