У меня есть строка GameOfThronesS01E05.mkv
. Я хочу GameOfThronesS01E05
, используя sed
с регулярным выражением.
Я пробовал
echo GameOfThronesS01E05.mkv | sed 's/\(.+\)\.mkv$/\1/'
, и это не сработало
Это более простое решение:
echo GameOfThronesS01E05.mkv | sed -n 's/.mkv//p'
Если вы используете систему, в которой есть утилиты GNU, вы всегда можете использовать basename
, чтобы удалить расширение:
$ basename -s ".mkv" GameOfThronesS01E05.mkv
GameOfThronesS01E05
В противном случае python тоже всегда будет хорошим выбором:
$ python -c 'import sys;print sys.argv[1][:-4]' GameOfThronesS01E05.mkv
GameOfThronesS01E05
Спасибо, @don_crissti. вот мой конвертер MKV в MP4
$vi /usr/local/bin/MKVtoMP4
for entry in *
do
if [[ $entry =~ .+\.mkv$ ]]; then
FILENAME=`echo $entry | sed -E 's/(.+)\.mkv$/\1/'`
ffmpeg -i "$entry" -codec copy "${FILENAME}.mp4"
fi
done
chmod ug+x /usr/local/bin/MKVtoMP4