Je essaie de renommer un fichier avec un tiret au début de son nom et les deux ceci:
mv -example-file-name example-file-name
et ceci:
mv '-example-file-name' example-file-name
résultat en:
mv: option invalide -- 'e'
Je essaie de renommer un fichier avec un tiret au début de son nom et les deux ceci:
mv -example-file-name example-file-name
et ceci:
mv '-example-file-name' example-file-name
résultat en:
mv: option invalide -- 'e'
La plupart des commandes GNU/Linux permettent d'utiliser une option --
pour indiquer la fin des options, de sorte que les mots suivants préfixés par -
ne soient pas traités comme des options.
mv -- -exemple-nom-fichier exemple-nom-fichier
Un petit test
$ touch -- -exemple
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -exemple
$ mv -- -exemple exemple
$
La réponse de RedGrittyBrick est très bonne. Une autre option est :
mv ./-nom-du-fichier-exemple nom-du-fichier-exemple
Un petit test :
$ touch ./-exemple
$ ls -l ./*ample
-rw-r--r-- 1 moi moi 0 Nov 25 16:02 ./-exemple
$ mv ./-exemple exemple
$ ls -l ./*ample
-rw-r--r-- 1 moi moi 0 Nov 25 16:02 ./exemple
Cette astuce fonctionne pour moi en temps de désespoir. Votre expérience peut varier
rename \- '' *
Vous devez échapper le tiret pour que rename le reconnaisse. Pourquoi rename ne respecte pas les simples quotes ou n'offre pas une option de remplacement est au-delà de moi.
C'est la seule méthode que j'ai vue qui gère de manière fiable un tiret initial en utilisant rename. Je suis d'accord avec les autres messages sur l'utilisation de mv, mais si vous ne pouvez pas utiliser mv pour une raison quelconque, cela fonctionne.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.