Ubicación de archivos después de un comando de cambio de nombre erróneo

Ubicación de archivos después de un comando de cambio de nombre erróneo

Novato aquí... acabo de intentar cambiar un nombre de archivo que tenía 2 puntos en su nombre a un solo punto usando

rename 's/.././' filename

El archivo ha desaparecido pero no creo que se haya eliminado porque todavía queda la misma cantidad de espacio en la memoria. ¿A dónde se habría enviado este archivo?

Respuesta1

El archivo se llama .lenameahora.

(Esto supone que el archivo fue llamado filenameantes, supongo que su archivo "real" tendrá un nombre diferente. Pero como sea que se haya llamado el archivo, los dos primeros caracteres se han sustituido por un ..)

Esto se debe a que un punto en una expresión regular es unpersonaje especialsignificadocoincide con cualquier personaje. Entonces, ..lo son dos personajes cualesquiera. Como renamesolo reemplaza la primera coincidencia a menos que agregues elglobalmodificador ( g), los primeros dos caracteres del nombre de archivo dado han sido reemplazados.

Tenga en cuenta que el "reemplazo" ens/regex/replacement/modifiersno es una expresión regular y, por lo tanto, el .lado derecho de su expresión s/.././funciona como esperaba.


Ahora, ¿dónde está tu archivo?

Los archivos que comienzan con a .son archivos ocultos. Por lo tanto, no los verás al ejecutar ls. Ejecute ls -apara revelar esos archivos.

Cambie el nombre de su archivo usandomv .lename filename


La próxima vez, utilice caracteres de escape que sean especiales para las expresiones regulares:

rename 's/\.\././' filename

Además, puede utilizar rename -n ...para hacer un ensayo y comprobar los resultados antes de realizar el cambio de nombre real. Eso te habría mostrado algo como esto:

rename(filename, .lename)

información relacionada