Estaba moviendo todos los datos a otra carpeta y cometí un error y ejecuté este comando
mv * /*
Todos los archivos han desaparecido ahora. ¿Cómo puedo encontrarlos? ¿O se eliminan?
Respuesta1
Todos los comodines similares *
son expandidos por el shell y pasados al comando. Eso significa que la primera estrella fue reemplazada con los archivos en su directorio de trabajo actual y la segunda con todos los archivos en /. Puedes ver esto ejecutando
echo /*
En mi sistema, eso resulta en
/bin /boot /dev /etc /home /lib /lib64 /lost+found /media
/misc /mnt /opt /proc /root /run /sbin /srv /sys /tmp /usr /var
Entonces, tu comando terminó siendo algo como:
mv file1 file2 ... ... ... /tmp /usr /var
lo que mueve todo a /var
. Por supuesto, lo que fue exactamente último puede variar en su sistema. Sea lo que sea, probablemente encontrarás tus archivos allí.
Supongo que estabas ejecutando como root. Si no lo fuera, no podría escribir la mayoría de los directorios en /, por lo que no habría pasado nada. Tenga mucho cuidado al ejecutar como root y evítelo cuando sea posible.
Respuesta2
Hice una buena observación de esto:
mkdir test; cd test; mkdir t1 t2 t3
cd ~/
mkdir testmove;
cd testmove;
touch abcd
mv * ~/test/*
Aquí está la parte interesante: el archivo "abcd" se mueve al directorio t3 junto con los directorios t1 y t2, es decir:
ls test
-> t3
cd t3
ls
t1 t2 abcd
lo que entendí es que cuando escribimos * el comando en realidad se expande y luego se ejecuta, por lo que el comando mv se expande como
mv abcd ~/test/t1 ~/test/t2 ~/test/t3
Por lo tanto, tomó t3 como destino y movió abcd,t1,t2 a t3.
Entonces, para responder a su pregunta, estará en el último directorio en /
Desde la página de manual mv
si tiene un enlace simbólico
Avoid specifying a source name with a trailing slash,
when it might be a symlink to a directory. Otherwise, `mv' may do
something very surprising, since its behavior depends on the underlying
rename system call. On a system with a modern Linux-based kernel, it
fails with `errno=ENOTDIR'. However, on other systems (at least
FreeBSD 6.1 and Solaris 10) it silently renames not the symlink but
rather the directory referenced by the symlink. *Note Trailing
slashes::.
Puede buscar su archivo usandofind / -type f -name <filename>