我使用 mv ./*/* 来展平 ntfs 文件系统上的目录,而没有 add 。到命令结束,现在我所有的文件都不见了

Sen*_*jai 2 mount ntfs bash mv

如何恢复这些文件?

我用过:mv ./*/*当它应该是mv ./*/* .现在我所有的文件都不见了。

mpy*_*mpy 7

我不认为你的文件丢失了;这应该发生:

假设以下结构(以 标记的目录/

.
|-- a/
|   |-- a1
|   |-- a2
|   |-- a3
|   `-- a4
|-- b/
|   |-- b1
|   |-- b2
|   |-- b3
|   `-- b4
|-- c/
`-- d/
    |-- d1/
    |   `-- foo
    |-- d2/
    |   `-- foo
    |-- d3/
    |   `-- foo
    `-- d4/
Run Code Online (Sandbox Code Playgroud)

首先,请记住 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
Run Code Online (Sandbox Code Playgroud)

我想你有一个类似的场景,这就是为什么我相信你的文件没有消失,而是简单地移动到层次结构更深处的某个地方。