使用shell脚本替换后缀名

思路:

 

1、取得原始文件的长度${#FILENAME}

2、取得临时文件的长度${#FILENAME%OLDSUFF}

3、如果原始文件的长度大于临时文件的长度则可以更改后缀名。

4、从文件中取得后缀名

${LINE%:*}  #取得前面的后缀名

${LINE#*:}#取得后面的后缀名

5、将前面的后缀名改为后面的后缀名

mv $FILENAME ${FILENAME%OLDSUFF}${NEWSUFF} 

 

 shell 代码:

 

 1  #!/bin/bash
  2  DIR=/tmp
  3  for FILENAME in $DIR/*.*
  4  do
  5     for LINE  in $(cat /etc/a.conf)
  6     do
  7         OLDSUFF=${LINE%:*}
  8         NEWSUFF=${LINE#*:}
  9         ORG_FILENAME_LEN=${#FILENAME}
 10         TMP_FILENAME=${FILENAME%$OLDSUFF}
 11         TMP_FILENAME_LEN=${#TMP_FILENAME}
 12         if [ $ORG_FILENAME_LEN -gt $TMP_FILENAME_LEN ];then
 13              mv $FILENAME ${TMP_FILENAME}$NEWSUFF
 14         else
 15             echo "$FILENAME do not match ....."
 16         fi

 17     done

 18  done