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


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 que com Un * x não mv expande os curingas, mas o shell:

  • Se você digitar mv ./*/* . que é expandido para 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 . e mv vai fazer o que quiser, porque o alvo (ou seja, o próprio ú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 ( . ).
  • Se você digitar mv ./*/* this_is_a_file que é expandido para 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 e mv recusa o fazer qualquer coisa com mv: target „this_is_a_file“ is not a directory. Nada é sobrescrito ou movido.

Agora, ao seu comando: mv ./*/* é expandido para 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. 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 parecido e é por isso que acredito que seus arquivos não desapareceram, mas mudou-se simplesmente para um nível mais profundo da hierarquia.


1

Tem certeza de que eles se foram?

Eu 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, mv comando teria usado isso como seu destino.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.