J'essaie de renommer un fichier avec un trait d'union au début de son nom et ceci:
mv -example-file-name example-file-name
et ça:
mv '-example-file-name' example-file-name
aboutir à:
mv: invalid option -- 'e'
La plupart des commandes GNU/Linux permettent un --
Option pour indiquer la fin des options afin que la suite -
Les mots préfixés ne sont pas traités comme des options.
mv -- -example-file-name example-file-name
Un petit test
$ touch -- -example
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -example
$ mv -- -example example
$
La réponse de RedGrittybrick est très bonne. Une autre option est:
mv ./-example-file-name example-file-name
Un petit test:
$ touch ./-example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./-example
$ mv ./-example example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./example
Cette astuce fonctionne pour moi en période de désespoir. Ymmv
rename \- '' *
Vous devez échapper à l'union des traitements pour renommer pour la reconnaître. Pourquoi renommer ne respecte pas les citations simples ou offrir une substitution de quelque nature que ce soit au-delà de moi.
C'est la seule méthode que j'ai vue qui gère de manière fiable un trait d'union de pointe utilisant le renommant. 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.