ファイル名の拡張子を変更する

古い拡張子を取り除いた後、新しい拡張子を付ける

#!/bin/sh
#chgext.sh

if [ $# -lt 2 ]; then
    echo "Usage: chgext.sh .newext files..."
    exit 1
fi

newext="$1"
shift

#新しい拡張子が.で始まっていない場合付け加える
expr "$newext" : '\.' >/dev/null || newext=".${newext}"

#残りの全ての引数について繰り返して処理
for fname do
    bname=`echo "$fname" | sed 's/\.[^.]*//'`
    mv "$fname" "${bname}${newext}"
done
$ ls *.txt; ./chgext.sh text *.txt; ls *.text
1.txt
1.text