メディアファイルのバッチ名の変更

メディアファイルのバッチ名の変更

私のPlexメディアサーバーにEnigma2 FreeSatレコーダーが接続されています。

PlexはEnigma2でファイルを表示して再生するのにはうまく機能しますが、ファイルの命名のため魅力的ではありません。

この形式でファイル名を変更するには:

yyyymmdd nnnn - channel - title.*たとえば、20181128 2100 - BBC One HD - The Apprenticeです。 *

到着する:

title - dd-mm-yyyy - channel.*たとえば、The Apprentice - 2018年11月28日 - BBC One HD。 *

(したがって、コマンドラインから数分ごとに実行できます)。

すでに名前が変更されたファイルの名前を変更しようとしないように、最初の形式のファイルのみが一致していることを確認したいと思います。

後でDockerコンテナとして実行したいと思います。

ベストアンサー1

次のシェルスクリプトがこれを実行できると思います。

元のファイル名の日付と時刻が数値であることを確認し、そうである場合は、名前を目的の形式に並べ替えます。

それ以外の場合はファイルをスキップするため、すでに変更されているファイルには触れません。

ディレクトリをファイルの場所に変更し、スクリプトを実行します。

#!/bin/bash

re='^[0-9]+$'

for i in *.*
do
 str="$i"
# echo "${str} -----"
 date=${str:0:8}
 time=${str:9:4}
  if [[ $date =~ $re ]] && [[ $time =~ $re ]]
  then
   channel=${i#*- }
   channel=${channel% -*}
   title=${i##*- }
   ext=${title##*.}
   title=${title%%.*}
   date=${date:6:2}-${date:4:2}-${date:0:4}
   mv -nv "$i" "$title - $date - $channel.$ext"
  fi
done

おすすめ記事