Estou tentando renomear um arquivo com um hífen no início do nome e isso:
mv -example-file-name example-file-name
e isto:
mv '-example-file-name' example-file-name
resulta em:
mv: invalid option -- 'e'
linux
command-line
bash
shell
Desmond Hume
fonte
fonte
mv *example-file-name example-file-name
tem o mesmo problema, porque a expansão do nome do arquivo (AKA globbing) acontece antesmv
é chamada.Respostas:
A maioria dos comandos GNU / Linux permite uma
--
opção para indicar o fim das opções, para que as-
palavras prefixadas subsequentes não sejam tratadas como opções.Um pequeno teste
fonte
rename
também. (pelo menos a versão que funciona comorename [options] <expression> <replacement> <file>...
, qualquer um que seja.)mv
não tem isso :(A resposta de RedGrittyBrick é muito boa. Outra opção é:
Um pequeno teste:
fonte
--
.Você pode usar isto:
que ele pode renomear todos os arquivos :) se o seu nome de arquivo:
após o código de execução, seu nome de arquivo se torna:
fonte
Esse truque funciona para mim em momentos de desespero. YMMV
Você precisa escapar do hífen para renomear para reconhecê-lo. Por que renomear não respeita aspas simples ou oferece algum tipo de substituição está além de mim.
Este é o único método que eu vi que lida com segurança com um hífen principal usando renomear. Concordo com os outros posts sobre o uso de mv, mas se você não pode usá-lo por qualquer motivo, isso funciona.
fonte