
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 mv
solo 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
, file1
y file2
y file3
a .
; ..
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-dir
en su ls -la
salida.
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/^/./' *