前日のスクリプトの修正

ニュース ファイナル 2010 1014 2305.0000.0002.ts

のような形式のファイル名が出てきたため.

#! /usr/bin/sh
#
# 動画ファイル名称の標準形を返します.
#
# ニュース ファイナル 2010 1014(木).ts
#
##################################
#             関数
#
function error_mssg {
    echo "usage: $(basename $0) -i <input file> [-b] [-a]" 1>&2
}

##################################
#           引数処理
#
while getopts "i:ba" opt; do
    case $opt in
	\?) error_mssg; exit 1; break;;
	i) ipath="$OPTARG";;
	b) is_basename=1;;
	a) is_added=1;;
    esac
done

if [[ -z "$ipath" ]]; then
    error_mssg
    exit 1
fi

###############################################
#     ファイル名称の変則
#

# 曜日が無い
# ニュース ファイナル 2010 1014 2305 02.ts
xp1="^\(.\+\) \([0-9]\{4\}\) \([0-9]\{4\}\)\( [0-9]\{4\} [0-9]\{2\}\.[^\.]\+\)$"

# 曜日,時刻が無く,連番が付加されている
# ニュース ファイナル 2010 1014 01.ts
# ニュース ファイナル 2010 1014 001.ts
xp2="^\(.\+\) \([0-9]\{4\}\) \([0-9]\{4\}\)\( [0-9]\{2,3\}\.[^\.]\+\)$"

# 曜日が無く,編集用連番(.0000)が付加されている
# ニュース ファイナル 2010 1014 2305.0002.0001.ts
# ニュース ファイナル 2010 1014 2305.0002.ts
# ニュース ファイナル 2010 1014 2305.ts
xp3="^\(.\+\) \([0-9]\{4\}\) \([0-9]\{4\}\)\( \([0-9]\{4\}\.\)\+[^\.]\+\)$"

# 標準ファイル形式に分別用の情報が付加されている
# ニュース ファイナル 2010 1014(木) 0001.ts
# ニュース ファイナル 2010 1014(木) 001.ts
# ニュース ファイナル 2010 1014(木) 01.ts
# ニュース ファイナル 2010 1014(木) 2305.0002.ts
# ニュース ファイナル 2010 1014(木) 2305.ts
# ニュース ファイナル 2010 1014(木).ts
xp4="^\(.\+\) \([0-9]\{4\}\) \([0-9]\{4\}\)(.)\(.*\.[^\.]\+\)$"

# 年月日のみ
# ニュース ファイナル 2010 1014.ts
xp5="^\(.\+\) \([0-9]\{4\}\) \([0-9]\{4\}\)\(\.[^\.]\+\)$"

# 年月日と編集用連番(.0000)のみ
# ニュース ファイナル 2010 1014.0000.0001.ts
xp6="^\(.\+\) \([0-9]\{4\}\) \([0-9]\{4\}\)\(\.\([0-9]\{2,4\}\.\)\+[^\.]\+\)$"

######################################
#            処理
#
for xp in "$xp1" "$xp2" "$xp3" "$xp4" "$xp5" "$xp6"
do
    title=$(echo "$ipath"|sed -e "s/$xp/\1 \2 \3/")
    if [[ "$title" != "$ipath" ]]; then
	datestr=$(echo "$ipath"|sed -e "s/$xp/\2\3/")
	weekday=$(date -d $datestr "+%a")
	if [[ $is_added ]]; then
	    added=$(echo "$ipath"|sed -e "s/$xp/\4/")
	    added=$(echo "$added"|sed -e "s/^ +/ /")
	    added=$(echo "$added"|sed -e "s/\.[^\.]\+$//")
	fi
	if [[ $is_basename ]]; then
	    stdname="$title($weekday)$added"
	else
	    stdname="$title($weekday)$added.${ipath##*.}"
	fi
	echo "$stdname"
	break
    fi
done