¿Cómo recupero archivos después de "mv * .*"?

¿Cómo recupero archivos después de "mv * .*"?

Escondí algunos archivos usando el comando:

mv * .*

pero ahora no puedo encontrarlos. Intenté usar:

mv .* *

pero no pasó nada (apareció un error). Si corro:

ls -la

está mostrando:

total 8  
drwxrwxr-x 2 abhishek abhishek 4096 Mar  9 20:46 .  
drwxrwxr-x 4 abhishek abhishek 4096 Mar  9 20:46 ..  

¿Hay alguna forma de recuperar mis archivos ocultos?

Respuesta1

Sus archivos no están ocultos, ha movido todos los archivos (y directorios, si los hay) un directorio hacia arriba.

Esto sucede porque mv * .*no funcionará como cree. El comando mvsolo moverá un archivo a un archivo (cambiar nombre) o moverá uno o varios archivos a un directorio. No moverá varios archivos a varios archivos con un cambio de nombre inteligente.


¿Qué pasó?

Supongamos que tenemos un directorio y 3 archivos en nuestro directorio:

dir1
file1
file2
file3

Algunos Shells (p. ej bash., dash, ...) expandirán su comando a:

mv dir1 file1 file2 file3 . ..

Su comando ampliado se ajusta a la segunda forma de SINOPSIS que encontrará en man mv:

mv [OPTION]... SOURCE... DIRECTORY

Tenga en cuenta el .y ..:

  • .es el directorio actual,
  • ..está un directorio arriba.

El comando significa: mover dir1, file1y file2y file3a .; ..Básicamente, también dará un error, algo como:

mv: cannot move '.' to '../.'

Pero dado que tiene permiso de escritura en ese directorio, todos los demás archivos se han movido. Puede encontrar sus archivos en ..(= un directorio arriba). Sin embargo, los archivos con el mismo nombre se han sobrescrito y no sabrá qué archivos estaban en qué directorio antes.


Si tuviera un subdirectorio .hidden-dir, se habría expandido a:

mv dir1 file1 file2 file3 . .. .hidden-dir

Entonces, todos los archivos se habrían movido a .hidden-dir. Sin embargo, este no parece ser su caso, porque lo habría visto .hidden-diren su ls -lasalida.


Como arreglar

Correr:

mv ../dir1 ../file1 ../file2 ../file3 .

Sin embargo, es necesario saber los nombres.


Lo que deberías haber usado

mmv '*' '.#1'

o

rename 's/^/./' *

información relacionada