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 .lename
ahora.
(Esto supone que el archivo fue llamado filename
antes, 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 rename
solo 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/modifiers
no 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 -a
para 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)