#! /bin/sh
f="FileName.17:09:2010 4.16.PM.720p.mp4"
echo ${f%%.*}${f##*[AP]M}
Это работает для любой переменной, содержащей строку, соответствующую шаблону.См. Расширение параметров для переменных оболочки .
С помощью sed просто удалите от первой точки до AM или PM.Или, если имя файла может иметь посторонние точки, то удалите от 1-го числа, сопровождаемого ':' до [AP] M, 's/\.[0-9]\+:.*\[AP]M//'
Я думаю, что способ sed мог бы быть лучше;потому что, если это не удается, он возвращает исходную строку.Несоответствие в выражении оболочки вернет часть имени дважды;но проверка ошибок может быть легко добавлена: она не работает для файлов, не имеющих AM или PM в имени.
echo FileName.17:09:2010 4.16.PM.720p.mp4|sed -e 's/\..*[AP]M\././'