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:
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.
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.
Odpowiedzi:
Nie sądzę, aby twoje pliki zostały utracone; tak powinno się stać:
Załóżmy następującą strukturę (katalogi oznaczone przez
/
)Najpierw pamiętaj, że z Un * x nie
mv
rozwija symboli wieloznacznych, aleshell
:mv ./*/* .
to zostanie rozwiniętemv /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 (.
).mv ./*/* this_is_a_file
któ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_file
a mv odmówi zrobienia czegokolwiek zmv: target „this_is_a_file“ is not a directory
. Nic nie zostanie zastąpione ani przeniesione.Teraz, na twoje polecenie:
mv ./*/*
zostanie rozwinięty domv /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: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ę.
źródło
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,mv
polecenie użyłoby go jako miejsca docelowego.źródło
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.
źródło