私はこれらのビデオファイルを持っています。
Fringe.S03E01.mkv
Fringe.S03E02.mkv
Fringe.S03E03.mkv
etc...
エピソードのタイトルを含む.csvテキストファイルもあります。
01,Olivia
02,The Box
03,The Plateau
etc...
私が達成したいことは。
Fringe.S03E01.Olivia.mkv
Fringe.S03E02.The Box.mkv
Fringe.S03E03.The Plateau.mkv
etc...
私はforeachを使ってbashスクリプトの構文を見つけようとしましたが、利用可能な結果は得られませんでした。
答え1
fringe_copy(){
local IFS=,
while read num title; do
f=Fringe.S03E$num.mkv
if [ -f "$f" ]; then
echo mv "$f" "${f%.mkv}.$title.mkv"
fi
done
}
fringe_copy <list_of_files
体験版の実行に満足している場合は、echo
以前のコンテンツを削除する必要があります。mv
答え2
このawk
提案も試してください。
ls Fringe* |
awk '
NR == FNR {EP[$1]=$2
next
}
{IX=substr($2, length($2)-1, 2)
$2 = $2 OFS EP[IX]
}
1
' FS=, episodes.csv FS=. OFS=. -
Fringe.S03E01.Olivia.mkv
Fringe.S03E02.The Box.mkv
Fringe.S03E03.The Plateau.mkv
エピソードのタイトルファイルを別の配列として読み取ったら、結果に応じてls
$ 2の最後の2文字の数字に基づいて適切なタイトルを挿入します。