TSファイル名に曜日を振り直す
課題
地デジで録画したファイルなどに曜日を付加したい.
当初ファイル名称には曜日を付加していませんでしたが,曜日があると視認しやすいので,最近では付加するようにしています.例えば次のような感じです.
曜日なし | ニュース ファイナル 2010 1014 2305.ts |
曜日あり | ニュース ファイナル 2010 1014(木) 2305.ts |
対処
#! /usr/bin/sh # # 曜日復活 # 例えば,次のような動画ファイルの曜日を復活させます. # # ニュース ファイナル 2010 1014.avi # => ニュース ファイナル 2010 1014(木).avi # # ニュース ファイナル 2010 1014 0000.0001.avi # => ニュース ファイナル 2010 1014(木) 0000.0001.avi # # <対象動画ファイル名>::=<番組名><半角空白><年><半角空白><月日><任意文字列>.<拡張子> # <結果動画ファイル名>::=<番組名><半角空白><年><半角空白><月日><曜日><任意文字列>.<拡張子> # <番組名>::=任意の文字列 # <年>::=数字4桁 # <月日>::=数字4桁 # <曜日>::="("[日月火水木金土]")" # <拡張子>::= avi ts など # てきとーBNFなので悪しからず exts="*.avi *.mpeg *.mp4 *.ts" for f in $exts do if [[ ! -f "$f" ]]; then continue; fi has_weekday=$(echo $f|sed -e "s/^.* [0-9]\{4\} [0-9]\{4\}\(([日月火水木金土])\).*$/\1/") if [[ "$f" == "$has_weekday" ]]; then date_str=$(echo $f|sed -e "s/^.* \([0-9]\{4\}\) \([0-9]\{4\}\).*$/\1\2/") weekday=$(date -d $date_str "+%a") new_name=$(echo $f|sed -e "s/^\(.* [0-9]\{4\} [0-9]\{4\}\)\(.*$\)/\1($weekday)\2/") mv "$f" "$new_name" fi done
補遺
これと言って,用途の広がりはありません.ただ,単なる名称変更と違って「曜日の付加」というのが忘れたくないテクなので,保存を兼ねて公開します.帯番組とか最初と最後でファイル名の付け方が違うとかって気持ち悪いので揃えたかったというだけです.
スクリプト中,拡張子を指定してます($exts).「*」でもいいのですが,なんとなくfoolproof的にわざわざ明示します.別な拡張子が必要になれば,書き換えます.私家版ですからてきとーに.