Novato aqui... tentei alterar um nome de arquivo que tinha 2 pontos em seu nome para um único ponto usando
rename 's/.././' filename
O arquivo desapareceu, mas não creio que tenha sido removido, pois ainda há a mesma quantidade de espaço na memória. Para onde esse arquivo teria sido enviado?
Responder1
O arquivo é chamado .lename
agora.
(Isso pressupõe que o arquivo foi chamado filename
antes, seu arquivo "real" terá um nome diferente, eu acho. Mas, independentemente de como o arquivo foi chamado, os dois primeiros caracteres foram substituídos por um .
.)
Isso ocorre porque um ponto na expressão regular é umcaractere especialsignificadocombinar com qualquer personagem. Então, ..
são quaisquer dois caracteres. As rename
substitui apenas a primeira correspondência, a menos que você tenha adicionado oglobalmodificador ( g
), os dois primeiros caracteres do nome do arquivo foram substituídos.
Observe que a "substituição" ems/regex/replacement/modifiers
não é uma expressão regular e, portanto, o .
lado direito da sua expressão s/.././
funciona conforme o esperado.
Agora, onde está seu arquivo:
Arquivos que começam com a .
são arquivos ocultos. Assim, você não os verá executando ls
. Corra ls -a
para revelar esses arquivos.
Renomeie seu arquivo novamente usandomv .lename filename
Da próxima vez, escape caracteres especiais para expressões regulares:
rename 's/\.\././' filename
Além disso, você pode rename -n ...
fazer um teste e verificar os resultados antes de realizar a renomeação real. Isso teria mostrado algo assim:
rename(filename, .lename)