问题描述
在终端窗口中,我键入:
mv filename ..\.. [Note the wrong slash.]
现在我找不到了。不见了。我运行了一些搜索并浏览了可恢复的已删除文件。没有。噗。为我提供使用Windows机器的权利。
谁知道它可能会去哪里?
最佳解决思路
它已经无处可去,它在当前目录中。它已被重命名为....
(四个点)。
由于任何前面有.
的文件名都被视为隐藏文件,因此它已被隐藏。所以,如果你做ls
,你将找不到它。与以往一样,您需要ls
的-a
(或-A
)选项才能查看隐藏文件,即ls -a
(或ls -A
)以查看它。
让我分解一下,你运行mv filename ..\..
,如果它是../
,前两个点就意味着父目录,但是你使用反斜杠..\
表示shell要转义下一个字符,但是点.
对shell没有特殊意义。因此,它会将其视为文字.
,并且还添加了最后一个.
,因此您将四个点....
作为文件名。
要恢复为以前的(原始)名称,请运行mv .... filename
。
次佳解决思路
运行mv .... filename
将其重命名。 (mv ..\.. filename
也可以,但是\
是多余的 – 就像你原来的命令一样。)
-
该文件尚未删除,这就是搜索可恢复的已删除文件未找到的原因。
-
与Windows类似,
.
和..
条目存在于每个目录中,分别指向”current”和”parent”目录。但与Windows不同,两个以上点的序列没有任何特殊含义。虽然这很不寻常,但你可以完全自由地命名一个名称完全由点组成的普通文件,只要它至少有三个点。 -
与Windows不同,在Ubuntu中,shell使用
\
作为转义字符,确保shell按字面处理后续字符,而不是赋予它特殊含义。.
字符在shell中没有特殊含义(特别是,shell不负责使.
和..
条目工作)。因此,在您的命令中,\.
等同于.
。 -
作为heemayl says,默认情况下,大多数实用程序不显示名称以
.
开头的文件和目录。由于....
以.
开始,因此在没有-A
或-a
标记的情况下运行ls
没有显示出来。
第三种解决思路
它仍然在同一目录中,现在只是一个’hidden’文件。您可以通过“mv …. filename”恢复它。