Assuming that the files probably aren't literally named 'File 1.mp4' and 'Sub 1.srt' (although the script still works if they are) but that the numbers in both sets of files match:
find "$dir1" -maxdepth 1 -name '*.mp4' | while IFS= read f ; do
num=$(echo "$f" | sed -e 's/^.* \([0-9]\+\)\.mp4/\1/')
subtitle=$(find "$dir2" -maxdepth 1 -name "* $num.srt" | head -1)
if [ -n "$subtitle" ] ; then
bn=$(basename "$f" .mp4)
mv "$subtitle" "$dir2/$bn.srt"
Note: this will work an all files except those with newlines in the filename. The
head -1 is to prevent the script from failing if there happens to be more than one .srt file with the same number....in that situation, the first file found will be renamed, the other(s) ignored.
If you want the subtitles moved into the same directory as the .mp4 files, change the
mv line to:
mv "$subtitle" "$dir1/$bn.srt"