Użyłem mv ./*/* do spłaszczenia katalogu w systemie plików NTFS bez dodawania. do końca polecenia, teraz wszystkie moje pliki zniknęły

Odpowiedzi:

7

Nie sądzę, aby twoje pliki zostały utracone; tak powinno się stać:

Załóżmy następującą strukturę (katalogi oznaczone przez /)

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

Najpierw pamiętaj, że z Un * x nie mvrozwija symboli wieloznacznych, ale shell:

  • Jeśli wpiszesz, mv ./*/* .to zostanie rozwinięte 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 . i mv zrobi to, co chcesz, ponieważ celem (tj. Ostatnim argumentem) jest katalog. Wszystko (tj. Wszystkie pliki / katalogi podane jako argumenty oprócz ostatniego) jest przenoszone do bieżącego dir ( .).
  • Jeśli wpiszesz, mv ./*/* this_is_a_filektóry zostanie rozwinięty do, 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_filea mv odmówi zrobienia czegokolwiek z mv: target „this_is_a_file“ is not a directory. Nic nie zostanie zastąpione ani przeniesione.

Teraz, na twoje polecenie: mv ./*/*zostanie rozwinięty do 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. Jak widać w moim przykładzie, zdarza się, że ostatnim argumentem jest katalog, który jest odpowiedni dla mv i wszystko się w nim przenosi - i kończysz na tym drzewie:

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

Przypuszczam, że miałeś podobny scenariusz i dlatego uważam, że twoje pliki nie zniknęły, ale zostały przeniesione gdzieś głębiej w hierarchię.

mpy
źródło
1

Jesteś pewien, że ich nie ma?

Uważam, że powłoka zostałaby rozwinięta ./*/*do listy plików i katalogów. A jeśli ostatnim elementem na tej liście był katalog, mvpolecenie użyłoby go jako miejsca docelowego.

Nifle
źródło
0

Jeśli najpierw wykonałeś kopię zapasową, przywróć ją z kopii zapasowej. W przeciwnym razie wypróbuj narzędzie takie jak NTFS Undelete; prawie na pewno nie odzyskasz wszystkiego, ale prawdopodobnie odzyskasz większość rzeczy.

Aaron Miller
źródło