"Archivo mv" y ahora falta

32

En una ventana de terminal, escribí:

mv filename ..\..      [Note the wrong slash.]

Ahora no puedo encontrarlo. Ido. Realicé algunas búsquedas y miré a través de archivos borrados recuperables. Nada. Maricón. Me sirve para usar una máquina Windows justo antes.

Alguien sabe a dónde podría haber ido?

John
fuente
find / -iname thefilename -print tal vez ?
Sergiy Kolodyazhnyy
@Serg Con thefilenameel nombre original de los archivos, ese findcomando no lo encontrará con el nuevo nombre.
Eliah Kagan
Me di cuenta de eso justo después de publicar el comentario. Mi respuesta inicial si falta un archivo es usar find, pero no me di cuenta de que esa operación cambió el nombre del archivo en lugar de moverlo
Sergiy Kolodyazhnyy

Respuestas:

70

No ha ido a ninguna parte, está en el directorio actual. Se ha renombrado como ....(cuatro puntos).

Como cualquier nombre de archivo que tenga un .frente se trata como un archivo oculto, por lo que se ha ocultado. Entonces, si lo haces ls, no lo encontrarás. Como siempre, necesita la opción -a(o -A) dels para ver los archivos ocultos, es decir ls -a(o ls -A) para verlo.

Déjame desglosarlo, corriste mv filename ..\.., los dos primeros puntos significarían el directorio principal si lo fuera ../, pero has usado una barra invertida ..\que indica shell para escapar del siguiente carácter, pero un punto .no tiene un significado especial para shell. Entonces, lo tratará como un literal .y el último. también se agregará, por lo que obtendrá cuatro puntos ....como nombre de archivo.

Para volver al nombre anterior (original), ejecute mv .... filename.

heemayl
fuente
2
Jajaja ... nunca se me ocurrió. Ahí está: "....". ¡Gracias! Supongo que interpretó el primer punto como el punto .hideme.
John
2
¿Puedo sugerir la -A(con una A mayúscula). Hace lo mismo ls -apero excluye .y ...
Paddy Landau
13

Ejecuta mv .... filenamepara cambiarle el nombre. ( mv ..\.. filenamefuncionaría también, pero el\ es superfluo, como estaba en su comando original).

  • El archivo no se ha eliminado, por lo que la búsqueda de archivos eliminados recuperables no lo encontró.
  • Como en Windows, .y.. las entradas están presentes en todos los directorios y se refieren a los directorios y "actuales" "padre", respectivamente. Pero a diferencia de Windows, las secuencias de más de dos puntos no tienen ningún significado especial. Aunque es inusual, es perfectamente libre de nombrar un archivo ordinario con un nombre que consiste completamente en puntos, siempre que tenga al menos tres puntos de largo.
  • A diferencia de Windows, en Ubuntu el shell usa \como un carácter de escape, asegurando que el shell trata al siguiente personaje literalmente en lugar de darle un significado especial. El .personaje no tiene un significado especial en el shell (en particular, el shell no es el responsable de hacer que funcionen las entradas .y ..). Por lo tanto, en su orden, \.era equivalente a. .
  • Como dice heemayl , por defecto la mayoría de las utilidades no muestran archivos y directorios cuyos nombres comienzan con a .. Como ....comienza con ., correr lssin la bandera -Ao -ano lo reveló.
Eliah Kagan
fuente
1
Así es exactamente como lo encontré. Me preguntaba por qué mi "\" no actuó como un escape, pero sí, nada de lo que escapar tan tratado normalmente. Tiene sentido.
John
5

todavía está en el mismo directorio, solo un archivo 'oculto' ahora. Puede recuperarlo con "mv .... filename".

Bruce
fuente