У меня есть несколько телешоу, хранящихся на моем сервере Ubuntu, и я могу переименовать их все, чтобы Коди мог их узнавать, кроме одного:
Первый эпизод, первый сезон:
Name - S01E001 - Title part1
Name - S01E001 - Title part2
Name - S01E001 - Title part3
Первый Эпизод, второй сезон:
Name - S02E020 - Title part1
Name - S02E020 - Title part2
Name - S02E020 - Title part3
Итак, Коди думает, что второе видео - это S02E20, но это S02E01. Шесть файлов должны быть после переименования:
Первый эпизод, первый сезон:
Name - S01E001.1 - Title
Name - S01E001.2 - Title
Name - S01E001.3 - Title
Первый эпизод, второй сезон:
Name - S02E001.1 - Title
Name - S02E001.2 - Title
Name - S02E001.3 - Title
Я знаю, что здесь много связанных вопросов, но ни один из них не подходит под этот шаблон, и почти никто не объясняет его решение. Справочная страница переименовать
мне не помогает
Соответствие регулярному выражению / ^ (. *) - (. *) - (. *) Часть ([0-9] +) /
заполняет название, индикатор эпизода, заголовок и номер детали в группах, которые затем можно использовать как $ 1
- $ 4
в тексте замены.
rename 's/^(.*) - (.*) - (.*) part([0-9]+)/$1 - $2.$4 - $3/' *
Все, что находится после части part1
, например расширение файла, остается без изменений.
Если вы хотите изменить группы захвата, используйте модификатор e
в конце выражения s /… /… /
. В s / REGEX / REPLACEMENT / e
часть REPLACEMENT
является выражением Perl, а не строкой с интерполяцией переменных. В выражении Perl используйте .
оператор для объединения строк. Например, если вы хотите вычесть 1 из номера детали:
rename 's/^(.*) - (.*) - (.*) part([0-9]+)/"$1 - $2." . ($4-1) . " - $3"/e' *