У меня есть тонна файлов фильмов и каталогов, структура имен которых: Название фильма (Автор, год) или Название фильма (Автор, год) LANG
Я намерен переименовать их всех (почти три тысячи) таким образом
Автор - Название фильма - Год - LANG
или что-то очень похожее к этому.
Мой вопрос: есть ли способ сделать пакетное переименование простым сценарием?
Заранее большое спасибо, ребята.
Хотя вы можете сделать это с помощью групп захвата регулярных выражений в инструменте переименования
на основе perl, мой выбор для этого, вероятно, будет mmv
ex.
$ mmv -n '* (*, *) *' '#2 - #1 - #3 - #4'
Name of the film (Author, year) LANG -> Author - Name of the film - year - LANG
Случаи с и без компонента LANG
обрабатываются проще всего отдельно - для последнего случая вы можете уменьшить команду до
mmv -n '* (*, *)' '#2 - #1 - #3'
Аналогичная возможность возможна в zsh
с модулем contrib zmv
:
% zmv -n '(*) \((*), (*)\) (*)' '$2 - $1 - $3 - $4'
mv -- 'Name of the film (Author, year) LANG' 'Author - Name of the film - year - LANG'
Удалите -n
, если вы счастливы, что преобразование выполнено правильно (один очевидная ошибка, если название фильма
когда-либо содержит круглые скобки).
Я отвечаю сам себе. После некоторых копаний в интернете и некоторых тестов мне удалось изменить файлы, содержащиеся в папках. The; используется для обозначения системы (без -r) для погружения в папки. Но ; станет первой переменной, поэтому порядок будет примерно таким:
mmv '; * (*, ). ' '# 1 # 3 - # 2 (# 4). # 5'
В этой ситуации № 1 соответствуют; а остальное - часть изменения названия.
Итак, большое спасибо Steeldriver за то, что он научил меня новому и мощному инструменту для пакетного переименования esaly. А также благодарит Элию Каган за его комментарий.