Изменение формата даты в имени файла - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть несколько файлов, которые не распознаются filebot, потому что они имеют следующую схему именования.

SOAP 3rd Oct 2018 part 1 1080p (USER) [GROUP].mp4

(имя изменено)

Filebot, однако, распознает эту схему именования и нуждается в

SOAP 2018 10 01 Part 1 (USER) [GROUP].mp4

Мне нужен скрипт, который может переименовать эти файлы в соответствии с этим форматом даты. Я пытался читать регулярные выражения, но это идет прямо над моей головой. Я хочу понять, как это можно решить.

1 Ответ

0 голосов
/ 06 ноября 2018

Используйте read из строки здесь для разбора имени файла на поля, затем используйте date для переформатирования.

Обновлено для обработки пробелов между элементами до даты.

$: for f in *mp4
   do IFS='!' read a date b <<< "$( echo "$f" | sed -E '
        s/^(.+) ([0-9]{1,2})[snrt][tdh] ([JFMASOND][aepuco][nbrylgptvc]) ([0-9]{4}) (.*)/\1!\3-\2-\4!\5/' )"
      newName="$( date -d "$date" +"$a %Y %m %d $b" )"
      echo "'$f' -> '$newName'"
      mv "$f" "$newName"
      ls -1 "$newName"
   done
'Coronation Street 2nd Nov 2018 part 2 1080p (Deep61) [WWRG].mp4' -> 'Coronation Street 2018 11 02 part 2 1080p (Deep61) [WWRG].mp4'
'Coronation Street 2018 11 02 part 2 1080p (Deep61) [WWRG].mp4'
'SOAP 3rd Oct 2018 part 1 1080p (USER) [GROUP].mp4' -> 'SOAP 2018 10 03 part 1 1080p (USER) [GROUP].mp4'
'SOAP 2018 10 03 part 1 1080p (USER) [GROUP].mp4'

Обратите внимание, что я использую одинарные кавычки внутри моего эха, и ls помещает их в вывод, но они не являются частью имени файла.

...