web-dev-qa-db-fra.com

Les groupes de capture sont ignorés lors du changement de nom de fichiers

J'ai un certain nombre de fichiers dans ce format:

##. ## - Nom du fichier.mp4

Je veux les renommer en:

s ## e ##. mp4

Voici ce que je suis venu avec:

renommer -n "s/^ (\ d {2}) \. (\ d {2}). */s $ 1e $ 2.mp4 /"

Cela fonctionne quand je l'ai testé sur http://regexr.com/ mais quand je lance la commande sur mon installation Ubuntu 12.04, tous mes fichiers sont renommés en se.mp4

Il semble donc que les groupes sont ignorés ou ne sont pas insérés ou quelque chose du genre. Est-ce que je manque quelque chose d'évident aveuglant ou est-ce qu'il se passe autre chose?

J'ai fini par utiliser pyRenamer et cela a fonctionné à merveille, mais j'aimerais quand même savoir pourquoi rename ne fonctionne pas correctement.

Vive et merci pour toute aide que vous pouvez me donner.

9
0x0049

Je pense que votre utilisation des guillemets doubles permet peut-être au shell de développer $1 et $2

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

alors qu'avec des guillemets simples autour de l'expression renommée

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