是' mv *'现在我无法找到我的档案

时间:2017-12-09 19:44:52

标签: debian mv

所有标题。

我做了mv *mv *.mkv(我不记得),现在我无法找到我的档案。

我可以让他们回来吗?

1 个答案:

答案 0 :(得分:0)

这里有一些可能性,具体取决于运行命令时当前目录中的内容。但在此之前,我想要涵盖星号的内容。

*(通配)

在bash中(据我所知,其他shell),星号执行一种名为globbing的文件名扩展。

这基本上将参数扩展为与表达式匹配的许多参数。因此,如果您只有*,则可以将当前目录中的所有(非隐藏)文件作为参数。对于*.mkv,它会扩展到以扩展名.mkv结尾的所有文件的列表。

mv *(有两个文件)

mv命令需要多个参数,并且通常与两个参数一起使用,将路径上的文件移动到第一个参数(源)表示由第二个参数(目标)表示的路径。一般来说,如果源文件中存在该文件,它将替换目标文件。在这种情况下,可能仍然可以恢复原始目标文件,但需要文件恢复技术(即与使用rm删除文件时相同)。

因此,如果您的目录中只有两个文件(或者如果运行该命令,则会有两个mkv文件),您可以有效地删除其中一个文件。

然而,鉴于听起来根本找不到文件,我认为发生了其他事情。

mv *(包含许多文件)

如果目录中有两个以上匹配的文件,mv会尝试将所有文​​件移动到最终参数表示的目录中。

从我刚刚做过的测试来看,如果最后一条路径没有表示目录并且什么也不做,那么它看起来会出错。

鉴于此,我认为您的文件可能很好,只是被移动到您的文件所在的子目录之一。我不是100%肯定,但我认为它将是按字母顺序排列的最后一个。

例如,如果您的目录看起来像这样(subdir是一个目录而文件* .mkv是文件):

$ ls
subdir  file1.mkv  file2.mkv  file3.mkv

你跑了mv *。我希望你现在看到:

$ ls
subdir

在这种情况下,您的文件可能位于subdir:

$ ls subdir/
file1.mkv  file2.mkv  file3.mkv

如果您无法找到任何文件,即使查看子目录,您可能需要为您正在做的事情提供更多上下文,以便完全弄清楚发生了什么。您可能还想搜索bash历史记录(~/.bash_history)以确切了解您运行的命令。