Группы перехвата игнорируются при переименовании файлов

10

У меня есть несколько файлов в этом формате:

##. ## - Имя файла .mp4

Я хочу переименовать их в:

s ## е ##. mp4

Вот что я придумал:

переименуйте -n "s / ^ (\ d {2}) \. (\ d {2}). * / s $ 1e $ 2.mp4 /"

Он работает, когда я тестировал его на http://regexr.com/, но когда я запускаю команду на моей установке Ubuntu 12.04, все мои файлы переименовываются вse.mp4

Таким образом, похоже, что группы игнорируются или не вставляются или что-то в этом роде. Я упускаю что-то ослепительно очевидное или что-то еще происходит?

В итоге я использовал pyRenamer, и это сработало замечательно, но я все еще хотел бы знать, почему renameне работает должным образом.

Приветствия и спасибо за любую помощь, которую вы можете оказать мне.

0x0049
источник

Ответы:

14

Я думаю, что, возможно, использование вами двойных кавычек позволяет оболочке расширяться $1и$2

$ rename -nv "s/^(\d{2})\.(\d{2}).*/s$1e$2.mp4/" *.mp4
12.34 File name.mp4 renamed as se.mp4

тогда как с одинарными кавычками вокруг выражения переименования

$ rename -nv 's/^(\d{2})\.(\d{2}).*/s$1e$2.mp4/' *.mp4
12.34 File name.mp4 renamed as s12e34.mp4
steeldriver
источник