Телесериал и сценарии Bash

Я только что загрузил сезон телесериала и подзаголовки.

Если .mp4 и .srt файлы имеют то же имя vlc, автоматически добавляют их к видео.

Единственной общей чертой, которую они имеют, является количество эпизода (E01, E02...).

Я хочу записать сценарий, которые меняют автоматически имена, но я не знаю как...

Например, AE01 Video.mp4 и Sub E01.srt должен иметь название .mp4
Какое-либо предложение?

Заранее спасибо!

1
задан 31 May 2016 в 03:04

1 ответ

Предположение, что все видеофайлы соответствуют шаблону *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'
0
ответ дан 23 December 2019 в 17:28

Другие вопросы по тегам:

Похожие вопросы: