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 paramv ./*/* this_is_a_file
, e mv recusar, faça qualquer coisa commv /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.