Переименуйте файл, чтобы переместить номер версии с конца на начало

2

Как переименовать файл в linux и взять версию # с конца и переместить ее в начало. Например, у меня есть имя файла:

Random text - text 1.1 (SD).mp3

в

1.1 Random text - text.mp3

Прямо сейчас я могу получить номер версии, но не могу переместить его в начало, у меня есть что-то вроде:

rename -n 's/(\d{1}\.\d{1}) \(SD\).mp3/$1.mp3/' *.mp3

что дает мне

Random text - text 1.1.mp3

Я попытался добавить вторую группу выражений, чтобы соответствовать началу файла, чтобы я мог поменять местами начало и конец, но потом ничего не происходит

Джеймс
источник
Я вижу пробел в регулярном выражении вашей команды переименования. Это должно быть там, и если так, то должно быть сброшено с \?
DarenW
@darenw: пробелы не нужно экранировать в регулярных выражениях.
Гравитация

Ответы:

2

Ваше регулярное выражение должно выглядеть так:

rename -n 's/^(.*)(\d{1}\.\d{1})(.*)$/$2 $1$3/' *.mp3
Ансгар Вичерс
источник
1

Следующее должно работать:

's/^(.+?) (\d+\.\d+) \(SD\)/$2 $1/'

Или, если вы хотите сохранить (SD)часть:

's/^(.+?) (\d+\.\d+) /$2 $1 /'
grawity
источник