Ich habe mv ./*/* verwendet, um ein Verzeichnis auf einem ntfs-Dateisystem zu reduzieren, ohne es hinzuzufügen. Bis zum Ende des Befehls sind alle meine Dateien verschwunden
2
Wie kann ich diese Dateien wiederherstellen?
Ich benutzte: mv ./*/*als es sein sollte mv ./*/* .Jetzt sind alle meine Akten weg.
Denken Sie zunächst daran, dass mit Un * x nicht mvdie Platzhalter erweitert werden, sondern shell:
Wenn Sie geben , mv ./*/* .dass erweitert wird zu
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 .
und mv wird tun , was Sie wollen, weil das Ziel (dh die sehr letzte Argument) ein Verzeichnis ist. Alles (dh alle Dateien / Verzeichnisse, die als Argumente angegeben wurden, mit Ausnahme des letzten) wird in das aktuelle Verzeichnis ( .) verschoben .
Wenn Sie folgendes eingeben mv ./*/* this_is_a_file, wird es erweitert 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_fileund mv lehnt es ab, irgendetwas damit zu tun mv: target „this_is_a_file“ is not a directory. Nichts wird überschrieben oder verschoben.
Nun zu Ihrem Befehl: mv ./*/*Wird erweitert zu 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. Wie Sie in meinem Beispiel sehen können, ist das letzte Argument ein Verzeichnis, das für mv in Ordnung ist, und alles wird darin verschoben - und Sie erhalten diesen Baum:
Ich nehme an, Sie hatten ein ähnliches Szenario und deswegen glaube ich, dass Ihre Dateien nicht weg sind, sondern einfach irgendwo tiefer in die Hierarchie gerückt sind.
Ich glaube, dass die Shell ./*/*zu einer Liste von Dateien und Verzeichnissen erweitert hätte. Und wenn das letzte Element in dieser Liste ein Verzeichnis gewesen mvwäre, hätte der Befehl dieses als Ziel verwendet.
Wenn Sie zuerst ein Backup erstellt haben, stellen Sie es von einem Backup wieder her. Versuchen Sie es ansonsten mit einem Tool wie NTFS Undelete. Sie werden mit ziemlicher Sicherheit nicht alles zurückbekommen, aber Sie werden wahrscheinlich die meisten Dinge zurückbekommen.
Antworten:
Ich glaube nicht, dass Ihre Dateien verloren gehen. das hätte passieren sollen:
Nehmen Sie die folgende Struktur an (Verzeichnisse markiert durch
/
)Denken Sie zunächst daran, dass mit Un * x nicht
mv
die Platzhalter erweitert werden, sondernshell
:mv ./*/* .
dass erweitert wird zumv /a/a1 ./a/a2 ./a/a3 ./a/a4 ./b/b1 ./b/b2 ./b/b3 ./b/b4 ./d/d1 ./d/d2 ./d/d3 ./d/d4 .
und mv wird tun , was Sie wollen, weil das Ziel (dh die sehr letzte Argument) ein Verzeichnis ist. Alles (dh alle Dateien / Verzeichnisse, die als Argumente angegeben wurden, mit Ausnahme des letzten) wird in das aktuelle Verzeichnis (.
) verschoben .mv ./*/* this_is_a_file
, wird es erweitertmv /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
und mv lehnt es ab, irgendetwas damit zu tunmv: target „this_is_a_file“ is not a directory
. Nichts wird überschrieben oder verschoben.Nun zu Ihrem Befehl:
mv ./*/*
Wird erweitert zumv /a/a1 ./a/a2 ./a/a3 ./a/a4 ./b/b1 ./b/b2 ./b/b3 ./b/b4 ./d/d1 ./d/d2 ./d/d3 ./d/d4
. Wie Sie in meinem Beispiel sehen können, ist das letzte Argument ein Verzeichnis, das für mv in Ordnung ist, und alles wird darin verschoben - und Sie erhalten diesen Baum:Ich nehme an, Sie hatten ein ähnliches Szenario und deswegen glaube ich, dass Ihre Dateien nicht weg sind, sondern einfach irgendwo tiefer in die Hierarchie gerückt sind.
quelle
Bist du sicher, dass sie weg sind?
Ich glaube, dass die Shell
./*/*
zu einer Liste von Dateien und Verzeichnissen erweitert hätte. Und wenn das letzte Element in dieser Liste ein Verzeichnis gewesenmv
wäre, hätte der Befehl dieses als Ziel verwendet.quelle
Wenn Sie zuerst ein Backup erstellt haben, stellen Sie es von einem Backup wieder her. Versuchen Sie es ansonsten mit einem Tool wie NTFS Undelete. Sie werden mit ziemlicher Sicherheit nicht alles zurückbekommen, aber Sie werden wahrscheinlich die meisten Dinge zurückbekommen.
quelle