Não é possível renomear um arquivo cujo nome começa com um hífen

23

Estou tentando renomear um arquivo com um hífen no início de seu nome e isso:

mv -example-file-name example-file-name

e isso:

mv '-example-file-name' example-file-name

resultar em:

mv: invalid option -- 'e'
    
por Desmond Hume 25.11.2012 / 15:55

4 respostas

38

A maioria dos comandos GNU / Linux permite que uma opção -- indique o fim das opções, de forma que as palavras prefixadas - subseqüentes não sejam tratadas como opções.

  mv -- -example-file-name example-file-name

Um pequeno teste

$ touch -- -example
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -example
$ mv -- -example example
$
    
por 25.11.2012 / 15:56
11

A resposta da RedGrittyBrick é muito boa. Outra opção é:

mv ./-example-file-name example-file-name

Um pequeno teste:

$ 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
    
por 25.11.2012 / 16:02
0

Você pode usar isto:

rename -- "s/\-//g" *

que pode renomear todos os arquivos :) se o seu nome de arquivo:

-ng--sh-ay-01[------------]-FLV

depois do código de execução, o nome do seu arquivo se torna:

ngshay01[]FLV
    
por 17.12.2015 / 22:27
0

Esse truque funciona para mim em momentos de desespero. YMMV

rename \- '' *

Você tem que escapar do hífen para renomear e reconhecê-lo. Por que renomear não respeita aspas simples ou oferecer uma substituição de algum tipo está além de mim.

Este é o único método que vi que manipula de forma confiável um hífen principal usando renomear. Eu concordo com os outros posts sobre o uso de mv, mas se você não pode usar o mv por qualquer motivo, isso funciona.

    
por 18.06.2016 / 18:11