複数のファイル名を一括して置き換えする

スクリプト名: rename.sh
書式 : rename.sh 検索文字列 置換え文字列 ファイル...
目的 : 複数のファイル名を一括して置換えする
戻り値 : 全て成功:0 失敗:1 エラー:9

#!/bin/sh
. Error_Msg.sh && . Arg_Nums.sh || exit 9
Arg_Nums -ge 3 "$@" || exit 9

_SRC_STR=$1
_SUB_STR=$2
shift 2

for _FILE in "$@"; do
    [ -e "$_FILE" ] || \
    { Error_Nsg "$0" "$_FILE did not exist, or permission denied."; exit 1; }

    #新しいファイル名を生成する
    #sedコマンドの-nオプションとpフラグは、置換えに成功した場合だけ
    #出力するよになっていて、失敗した場合は_NEWは空になる
    _NEW=$(echo "$_FILE" | sed -n "s#$_SRC_STR#$_SUB_STR#p")
    if [ "$_NEW" != "" ]; then
        mv "$_FILE" "$_NEW" 2> /dev/null
        [ $? = 0 ] || \
        { Error_Msg "$0" "Could not rename from $_FIEL to $_NEW"; \
            _RETURN=1; }
        _FLAG=1
    fi
done

[ "$_FLAG" = 1 ] || \
    { Error_Msg rename.sh "No \"$_SRC_STR\" found."; exit 1; }

exit $_RETURN