#!/bin/bash for srt in *.srt; do [[ -f "$srt" ]] || { echo "no .srt files found"; exit 1; } episode=$(echo "$srt" | grep -o "S[0-9]\{2\}E[0-9]\{2\}") if [[ -z "$episode" ]]; then echo "no episode number found in '$srt'" exit fi video_file=$(find . -maxdepth 1 -type f -name "*${episode}*.mkv") if [[ $video_file == '' ]] then epnumber=$(echo "$episode" | head -c6 | tail -c2) echo "no matching video file found for '$episode', trying ep number $epnumber..." video_file=$(find . -maxdepth 1 -type f -name "* ${epnumber} *.mkv") fi if [[ -n "$video_file" ]]; then echo "found video file: $video_file" video_basename=$(basename "$video_file" .mkv) new_name="${video_basename}.srt" if [[ "$srt" != "$new_name" ]]; then mv -v "$srt" "$new_name" fi else echo "no matching video file found for '$srt'" fi done