“mv 文件”,现在它不见了

Joh*_*ohn 33 command-line bash hidden-files mv

在终端窗口中,我输入:

mv filename ..\..      [Note the wrong slash.]
Run Code Online (Sandbox Code Playgroud)

现在我找不到了。走了。我进行了一些搜索并查看了可恢复的已删除文件。没有。噗。适合我之前使用 Windows 机器。

有谁知道它可能去了哪里?

hee*_*ayl 71

它无处可去,它在当前目录中。它已重命名为....(四个点)。

由于任何.前面有 的文件名都被视为隐藏文件,因此它已成为隐藏文件。所以,如果你这样做ls,你就不会找到它。像往常一样,您需要使用-a(或-A)选项ls来查看隐藏文件,即ls -a(或ls -A)来查看它。

让我把它分解一下,你跑了mv filename ..\..,前两个点如果是../,则表示父目录,但你使用了反斜杠..\,表示 shell 转义下一个字符,但点.对 shell 没有特殊意义。因此,它将把它当作一个文字.,最后一个.也被添加,所以你有四个点....作为文件名。

要恢复到以前的(原始)名称,请运行mv .... filename.

  • 哈哈哈……没想到。它是:“……”。谢谢!我想它将第一个点解释为 .hideme 点。 (2认同)
  • 我可以建议`la -A`(大写字母A)。它的作用与 `ls -a` 相同,但不包括 `.` 和 `..`。 (2认同)

Eli*_*gan 13

运行mv .... filename以将其重命名。(mv ..\.. filename也可以,但这\是多余的——就像你原来的命令一样。)

  • 该文件尚未删除,这就是搜索可恢复已删除文件未找到它的原因。
  • 如同在Windows中,...条目存在于每个目录,并分别指的是“当前”和“父”目录。但与 Windows 不同的是,超过两个点的序列没有任何特殊含义。尽管这是不寻常的,但您可以完全自由地使用完全由点组成的名称命名普通文件,只要它至少有三个点长。
  • 与 Windows 不同,在 Ubuntu 中,外壳程序\用作转义字符,确保外壳程序按字面意思处理以下字符,而不是赋予其特殊含义。该.字符在 shell 中没有特殊含义(特别是,shell 不负责使...条目工作)。因此,在您的命令中,\.相当于..
  • 正如heemayl 所说,默认情况下,大多数实用程序不显示名称以.. 由于....以 开头.,在ls没有-Aor-a标志的情况下运行不会显示它。


小智 5

它仍然在同一个目录中,现在只是一个“隐藏”文件。您可以通过“mv .... filename”恢复它。