Ok, eu tenho um monte de arquivos começando com um traço, -. O que não é tão bom ... e quero renomeá-los. No meu caso particular, eu gostaria de colocar um personagem na frente deles.
Eu encontrei a seguinte linha que deve funcionar, mas por causa disso não funciona:
for file in -N*.ext; do mv $file x$file; done
Se eu colocar um echo
na frente, mv
eu recebo um monte de
mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext
O que está correto, exceto, é claro, que o primeiro nome do arquivo é opções. Então, quando eu removo echo
e o executo, recebo um monte de
mv: illegal option -- N
Eu tentei mudar para
for file in -N*.ext; do mv "$file" "x$file"; done
mas as aspas são apenas ignoradas, parece. Tentei usar aspas simples, mas a variável não foi expandida ... O que faço aqui?
Atualização: agora também tentei citar as aspas. Como isso:
for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done
E quando eu ecoo isso, parece correto, mas quando eu realmente corro isso, eu apenas
mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory
Eu não tenho idéia de como fazer isso agora ... suspiro
Respostas:
Você precisa usar a palavra
--
- chave para informar ao comando mv que os argumentos não devem ser interpretados como opções. Ver:Use
--
depois de todas as opções na linha de comando. Por exemplo, se você está tentando usar a-i
opção para mv , ela seria anterior--
:fonte
./
na frente do nome do arquivo, o que funcionaria. Mas esta é, naturalmente, uma opção mais limpa mesmo :)./
qualquer um. mas você está correto, isso também funciona para esta situação.--
significado não processa argumentos adicionais, pois as opções são uma convenção e não são respeitadas por todos os programas. Alguns usam um só-
para isso, e outros não aceitam nada para esse fim. Portanto,./
vale a pena ter em mente o anexo .--
como argumento especial é uma extensão GNU, mas é mencionado nas diretrizes POSIX. consulte a seção 12.2, diretriz 10: opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html ... isso significa que você pode esperar que a maioria dos utilitários POSIX e GNU respeite a convenção, mas outros não.Outra técnica é incluir o diretório pai com o nome do arquivo ...
Para renomear o arquivo '-arquivo-para-renomear' para 'arquivo-para-renomear' ...
Obrigado @ Skippy le Grand Gourou. Confirmou que ./-file-to-rename funciona com
mv
erm
como em ...fonte
./
.