Eu usei o mv ./*/* para achatar um diretório em um sistema de arquivos ntfs, sem adicionar. até o final do comando, agora todos os meus arquivos sumiram

2

Como posso recuperar esses arquivos?

Eu usei: mv ./*/* quando deveria ser mv ./*/* . Agora todos os meus arquivos sumiram.

    
por Senjai 26.06.2013 / 22:36

3 respostas

7

Eu não acho que seus arquivos estão perdidos; isso deveria ter acontecido:

Assuma a seguinte estrutura (dirs marcados por / )

.
|-- a/
|   |-- a1
|   |-- a2
|   |-- a3
|   '-- a4
|-- b/
|   |-- b1
|   |-- b2
|   |-- b3
|   '-- b4
|-- c/
'-- d/
    |-- d1/
    |   '-- foo
    |-- d2/
    |   '-- foo
    |-- d3/
    |   '-- foo
    '-- d4/

Primeiro, lembre-se de que com Un * x não mv expande os curingas, mas o shell :

  • Se você digitar mv ./*/* . , que é expandido para %código% e o mv fará o que você quiser, porque o alvo (isto é, o muito último argumento) é um diretório. Tudo (ou seja, todos os arquivos / diretórios fornecidos como argumentos exceto o último) é movido para o diretório atual ( mv /a/a1 ./a/a2 ./a/a3 ./a/a4 ./b/b1 ./b/b2 ./b/b3 ./b/b4 ./d/d1 ./d/d2 ./d/d3 ./d/d4 . ).
  • Se você digitar . , que é expandido para mv ./*/* this_is_a_file , e mv recusar, faça qualquer coisa com mv /a/a1 ./a/a2 ./a/a3 ./a/a4 ./b/b1 ./b/b2 ./b/b3 ./b/b4 ./d/d1 ./d/d2 ./d/d3 ./d/d4 this_is_a_file . Nada é sobrescrito ou movido.

Agora, para o seu comando: mv: target „this_is_a_file“ is not a directory é expandido para mv ./*/* . Como você pode ver no meu exemplo, acontece que o último argumento é um diretório, o que é bom para o mv e tudo é movido para ele - e você acaba com essa árvore:

.
|-- a/
|-- b/
|-- c/
'-- d/
    '-- d4/
        |-- a1
        |-- a2
        |-- a3
        |-- a4
        |-- b1
        |-- b2
        |-- b3
        |-- b4
        |-- d1/
        |   '-- foo
        |-- d2/
        |   '-- foo
        '-- d3/
            '-- foo

Suponho que você tenha um cenário semelhante e é por isso que acredito que seus arquivos não desapareceram, mas mudou-se simplesmente para um nível mais profundo da hierarquia.

    
por 26.06.2013 / 23:26
1

Tem certeza de que eles foram embora?

Acredito que o shell teria expandido ./*/* para uma lista de arquivos e diretórios. E se o último item dessa lista fosse um diretório, o comando mv teria usado isso como destino.

    
por 26.06.2013 / 23:21
0

Se você fez um backup primeiro, restaure a partir do backup. Caso contrário, tente uma ferramenta como NTFS Undelete; você quase certamente não receberá tudo de volta, mas você provavelmente recuperará a maioria das coisas.

    
por 26.06.2013 / 22:52

Tags