所有标题。
我做了mv *
或mv *.mkv
(我不记得),现在我无法找到我的档案。
我可以让他们回来吗?
答案 0 :(得分:0)
这里有一些可能性,具体取决于运行命令时当前目录中的内容。但在此之前,我想要涵盖星号的内容。
在bash中(据我所知,其他shell),星号执行一种名为globbing的文件名扩展。
这基本上将参数扩展为与表达式匹配的许多参数。因此,如果您只有*
,则可以将当前目录中的所有(非隐藏)文件作为参数。对于*.mkv
,它会扩展到以扩展名.mkv
结尾的所有文件的列表。
mv命令需要多个参数,并且通常与两个参数一起使用,将路径上的文件移动到第一个参数(源)表示由第二个参数(目标)表示的路径。一般来说,如果源文件中存在该文件,它将替换目标文件。在这种情况下,可能仍然可以恢复原始目标文件,但需要文件恢复技术(即与使用rm
删除文件时相同)。
因此,如果您的目录中只有两个文件(或者如果运行该命令,则会有两个mkv文件),您可以有效地删除其中一个文件。
然而,鉴于听起来根本找不到文件,我认为发生了其他事情。
如果目录中有两个以上匹配的文件,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
)以确切了解您运行的命令。