Я только что загрузил сезон телесериала и подзаголовки.
Если .mp4 и .srt файлы имеют то же имя vlc, автоматически добавляют их к видео.
Единственной общей чертой, которую они имеют, является количество эпизода (E01, E02...).
Я хочу записать сценарий, которые меняют автоматически имена, но я не знаю как...
Например, AE01 Video.mp4
и Sub E01.srt
должен иметь название .mp4
Какое-либо предложение?
Заранее спасибо!
Предположение, что все видеофайлы соответствуют шаблону *Exx*.mp4
и все соответствие файлов подзаголовка *Exx*.srt
где xx
то же двухразрядное десятичное число, можно использовать следующий сценарий оболочки для переименования файлов:
#!/bin/bash
shopt -s nullglob
printf '%s\n' *.mp4 |
sed -nre 's/^.*E([0-9]{2}).*$/\1 &/p' |
while read -r episode video; do
for subtitle in *"E${episode}"*.srt; do
dst="${video%.*}.${subtitle##*.}"
if [ "$dst" != "$subtitle" ]; then
mv -viT -- "$subtitle" "$dst"
fi
done
done
Я добавил интерактивную ведьму (-i
) к mv
управляйте в случае, если существуют несколько, файл подзаголовка с тем же числом эпизода на имя или файл того же имени уже существуют. Это - также идемпотент, означая, что выполнение его многократно не изменяет результат, таким образом, можно прервать сценарий любое время, исследовать что-то и повторно выполнить его снова позже.
Можно протестировать его с некоторыми пустыми файлами, созданными во временном каталоге:
mkdir /tmp/scratch
cd /tmp/scratch
touch 'AE01 Video.mp4' 'Sub E01.srt'