Localização dos arquivos após comando de renomeação incorreto

Localização dos arquivos após comando de renomeação incorreto

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 .lenameagora.

(Isso pressupõe que o arquivo foi chamado filenameantes, 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 renamesubstitui 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/modifiersnã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 -apara 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)

informação relacionada