
Escondi alguns arquivos usando o comando:
mv * .*
mas agora não consigo encontrá-los. Eu tentei usar:
mv .* *
mas nada aconteceu (um erro foi mostrado). Se eu correr:
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 ..
Existe alguma maneira de recuperar meus arquivos ocultos?
Responder1
Seus arquivos não estão ocultos, você moveu todos os arquivos (e diretórios, se houver) um diretório acima.
Isso acontece porque mv * .*
não funcionará como você pensa. O comando mv
moverá apenas um arquivo para um arquivo (renomear) ou moverá um ou vários arquivos para um diretório. Ele não moverá vários arquivos para vários arquivos com alguma renomeação inteligente.
O que aconteceu?
Vamos supor que temos um diretório e 3 arquivos em nosso diretório:
dir1
file1
file2
file3
Alguns Shells (por exemplo bash
, dash
, ...) expandirão seu comando para:
mv dir1 file1 file2 file3 . ..
Seu comando expandido se enquadra na segunda forma da SINOPSE que você encontra em man mv
:
mv [OPTION]... SOURCE... DIRECTORY
Observe o .
e ..
:
.
é o diretório atual,..
está um diretório acima.
O comando significa: mover dir1
, file1
e file2
e file3
para .
; ..
Também ocorrerá essencialmente um erro, algo como:
mv: cannot move '.' to '../.'
Mas como você tem permissão de gravação nesse diretório, todos os outros arquivos foram movidos. Você pode encontrar seus arquivos em ..
(= um diretório acima). No entanto, os arquivos com o mesmo nome foram substituídos e você não saberá quais arquivos estavam em qual diretório antes.
Se você tivesse um subdiretório .hidden-dir
, ele teria se expandido para:
mv dir1 file1 file2 file3 . .. .hidden-dir
Então, todos os arquivos teriam sido movidos para .hidden-dir
. No entanto, este não parece ser o seu caso, porque você teria visto .hidden-dir
em sua ls -la
saída.
Como consertar
Correr:
mv ../dir1 ../file1 ../file2 ../file3 .
No entanto, você precisa saber os nomes.
O que você deveria ter usado
mmv '*' '.#1'
ou
rename 's/^/./' *