2

Как я могу восстановить эти файлы?

Я использовал: mv ./*/* когда это должно было быть mv ./*/* . Теперь все мои файлы исчезли.

3 ответа3

7

Я не думаю, что ваши файлы потеряны; это должно было случиться:

Предположим следующую структуру (dirs отмечены /)

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

Во-первых, помните, что с Un * x не mv расширяет символы подстановки, а shell:

  • Если вы mv ./*/* . это расширяется до 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 . и mv сделает то, что вы хотите, потому что целью (то есть самым последним аргументом) является каталог. Все (то есть все файлы / каталоги, заданные в качестве аргументов, кроме последнего) перемещается в текущий каталог (.).
  • Если вы mv ./*/* this_is_a_file который будет расширен до 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 и mv отказывается что-либо делать с помощью mv: target „this_is_a_file“ is not a directory . Ничто не перезаписывается и не перемещается.

Теперь, к вашей команде: mv ./*/* расширяется до 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 . Как вы можете видеть в моем примере, случается, что последний аргумент является каталогом, который подходит для mv, и все перемещается туда - и вы в итоге получаете это дерево:

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

Я полагаю, у вас был похожий сценарий, и поэтому я считаю, что ваши файлы не исчезли, а просто попали куда-то глубже в иерархию.

1

Вы уверены, что они ушли?

Я считаю, что оболочка расширилась бы ./*/* в список файлов и каталогов. И если бы последним элементом в этом списке оказался каталог, команда mv бы его в качестве пункта назначения.

0

Если вы сначала сделали резервную копию, восстановитесь из резервной копии. В противном случае, попробуйте такой инструмент, как NTFS Undelete; Вы почти наверняка не вернете все, но, вероятно, вернете большинство вещей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .