【求助】请问,如何获取指定文件名的扩展名?

【求助】请问,如何获取指定文件名的扩展名?

请问,如何获取指定文件名的扩展名?
  
  自己写了一个脚本,用于把某目录中的图片文件按时间序从指定序号开始重命名。
  有一个问题,因为扩展名不一定相同,需要把扩展名单独处理
  请问,要怎么样才能把扩展名提取出来?
   [CODE]
  #!/bin/bash
  DIR=./test #$1
  let i=98 #$2
  
  for F_IN in ls -t1 $DIR; do
          F_EX=".gif"                 #??这里怎样从$F_IN获取文件扩展名?
          if [ $i -lt 100 ]; then
                  echo "00$i$F_EX"
                  #mv "$DIR/$F_IN" "$DIR/00$i$F_EX"
          elif [ $i -lt 1000 ]; then
                  echo "0$i$F_EX"
                  #mv "$DIR/$F_IN" "$DIR/0$i$F_EX"
          else
                  echo "$i$F_EX"
                  #mv "$DIR/$F_IN" "$DIR/$i$F_EX"
          fi
          let i++
  done
  [/CODE]
  注:
  1.扩展名中有可能有4个字母的,如:".jpeg"。
  2.文件名中有可能有多个".",如:"www.aaa.com_xxxx.png"
  
  我刚开始学shell程序,还有很多不明白的地方,请大家多帮助了
  文件的数量也不太多,就2000来个
  
  
  .      
复制内容到剪贴板
代码:
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[3975 0] #[/color] var=a.b.c.d
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[3975 0] #[/color] echo ${var%.*}
a.b.c
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[3975 0] #[/color] echo ${var%%.*}
a
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[3975 0] #[/color] echo ${var#*.}
b.c.d
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[3975 0] #[/color] echo ${var##*.}
d
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[3975 0] #[/color] o
      
了解!用 ${F_IN##*.} 的形式吧。
谢了       
此类问题已经被重复问过N次了
shell的解决方法无非就是
1
参考上面代码

2
复制内容到剪贴板
代码:
[0 No.1835 huan@huan ~]$ echo aaa.bbb.ccc | sed 's!.*\.!!'
ccc

[0 No.1836 huan@huan ~]$ echo aaa.bbb.ccc | awk -F\. '{ print $NF}'
ccc
如果愿意用Perl
复制内容到剪贴板
代码:
[0 No.1852 huan@huan ~]$ echo aaa.bbb.ccc | perl -ple ' s!.*\.!! '
ccc

[0 No.1853 huan@huan ~]$ echo aaa.bbb.ccc | perl -aF'\.' -ple ' $_ = $F[-1] '
ccc

[0 No.1854 huan@huan ~]$ echo aaa.bbb.ccc | perl -MFile::Basename -ple ' $_ = ( fileparse $_,qr/[^.]*/ )[2] '
ccc