J'essaie de renommer un fichier avec un trait d'union au début de son nom et les deux ceci:
mv -example-file-name example-file-name
et ça:
mv '-example-file-name' example-file-name
aboutir à:
mv: invalid option -- 'e'
linux
command-line
bash
shell
Desmond Hume
la source
la source
mv *example-file-name example-file-name
a le même problème, car l'expansion du nom de fichier (globalisation AKA) se produit avant l'mv
appel.Réponses:
La plupart des commandes GNU / Linux permettent à une
--
option d'indiquer la fin des options afin que les-
mots préfixés suivants ne soient pas traités comme des options.Un petit test
la source
rename
. (au moins la version qui fonctionnerename [options] <expression> <replacement> <file>...
, quelle qu'elle soit.)mv
n'a pas ça :(La réponse de RedGrittyBrick est très bonne. Une autre option est:
Un petit test:
la source
--
.Vous pouvez utiliser ceci:
qu'il peut renommer tous les fichiers :) si votre nom de fichier:
après l'exécution du code, votre nom de fichier devient:
la source
Cette astuce fonctionne pour moi en période de désespoir. YMMV
Vous devez échapper le trait d'union pour le renommer pour le reconnaître. Pourquoi le changement de nom ne respecte pas les guillemets simples ou n'offre pas une dérogation quelconque
C'est la seule méthode que j'ai vue qui gère de manière fiable un trait d'union en utilisant renommer. Je suis d'accord avec les autres articles sur l'utilisation de mv, mais si vous ne pouvez pas utiliser mv pour une raison quelconque, cela fonctionne.
la source