-
Sua última variante é a correta para usar aspas duplas internas - mas você tem que escapar também do
$1caso contrário o shell irá expandi-lo:"/.*(\d\d).jpg/Foo's Excellent Photo - \.jpg/" -
No entanto, ainda recebo o erro
Bareword found where operator expected at (eval 1) line 1, near "/.*(\d\d).jpg/Foo's" (Missing operator before Foo's?) syntax error at (eval 1) line 1, near "/.*(\d\d).jpg/Foo's Excellent "Mas isso não é por causa de citações erradas, mas porque
perl-renameespera um regex perl. E você obviamente deseja pesquisar e substituir, portanto, uses/.../.../, não apenas/.../.../. -
Então, resumindo, esse comando funciona perfeitamente:
$ rename -n "s/.*(\d\d).jpg/Foo's Excellent Photo - \.jpg/" * PIC44.jpg renamed as Foo's Excellent Photo - 44.jpg PIC45.jpg renamed as Foo's Excellent Photo - 45.jpg