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

Antworten:

7

Ich glaube nicht, dass Ihre Dateien verloren gehen. das hätte passieren sollen:

Nehmen Sie die folgende Struktur an (Verzeichnisse markiert durch /)

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

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:

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

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.

mpy
quelle
1

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 gewesen mvwäre, hätte der Befehl dieses als Ziel verwendet.

Nifle
quelle
0

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.

Aaron Miller
quelle