意外使用 mv 导致文件消失。我应该在哪里查找它?

意外使用 mv 导致文件消失。我应该在哪里查找它?

我有一个文件,里面有一些凭证;出于某种原因,它现在被隐藏了。我可以在桌面上看到有两个文件夹..名称。它们是从哪里来的?我的文件是sample.txt。我搞砸了 mv 命令,文件被隐藏了。现在,我试图找出我的文件在哪里。

我需要一些帮助!

编辑:这些是我使用的命令:

1861  mv sample.txt Downloads
1872  find sample.txt
1887  mv .. sample.txt
1888  mv ... sample.txt

答案1

这里的问题是,mv source target当命令target不以 结尾时/,其行为取决于是否存在名为 的现有目录(或指向目录的现有符号链接)target。有时,这会使它们执行的操作与您预期的不同。

您展示了四个命令。第一个命令是最重要的:

mv sample.txt Downloads

该命令已移动或重命名sample.txt

sample.txt如果当前目录中没有被调用的内容,则mv sample.txt Downloads失败,并且不会发生任何变化。但根据您的描述,听起来好像曾是这样的文件。所以:

  1. Downloads如果当前目录中有一个名为的目录,则mv sample.txt Downloads尝试移动sample.txt到名为Downloads,并且可能成功。如果Downloads是指向目录的符号链接而非实际目录,也会发生这种情况。
  2. Downloads如果当前目录中没有被调用的目录,则mv sample.txt Downloads尝试重新sample.txt命名Downloads。 (不Downloads.txt只是Downloads。)

如果这是在Desktop目录中,则可能发生第二种情况,因为你可能没有Downloads目录目录Desktop。但是如果你这样做,你就处于第一种情况。

因此,您应该查看运行时所在的目录,mv sample.txt Downloads查找名为 的条目Downloads。根据之前存在的内容,这应该该文件以前称为sample.txt,或者应该包含 sample.txt


至于您展示的其他三个命令,它们应该根本没有做出任何改变,并且也不应该期望它们透露有关第一个命令的效果的任何有用信息。

find sample.txt不会显示任何内容,除非存在所谓的sample.txt驻留直接地在当前目录中。如果您想查找当前目录中任何位置直接或间接包含的文件,其名称为sample.txt,则可以使用find . -name sample.txt。(当然,这不会找到名称不再为 的文件sample.txt。)

在 中mv .. sample.txt..是父目录的名称,即当前目录所在的目录,或者如果当前目录是/,则父目录就是/其本身。每个目录都有一个..具有此含义的条目。该命令尝试将..父目录的条目重命名为sample.txt。这应该会失败并出现错误,在这种情况下,错误会有些令人困惑地报告为“设备或资源繁忙”。

在 中mv ... sample.txt...不会被特殊处理。目录始终包含特殊条目...,但名称...并不特殊。因此,您可能没有名为 的文件...

  • 假设您没有这样做,则该命令失败并且不会做出任何更改。
  • ...如果你在当前目录中确实有一个名为的文件,并且没有目录被调用sample.txt(并且没有指向sample.txt目录的符号链接),那么...将被重命名为sample.txt。如果sample.txt已经存在,并且既不是目录也不是指向目录的符号链接,它将被取代并且(除非有其他硬链接指向它)恢复可能很困难甚至不可能,具体取决于文件系统随后被写入了多少。但是,这种情况不太可能发生,因为您可能从未有过名为 的文件...,并且由于运行了该命令该命令可能已成功重命名sample.txt或将其放在其他位置,并且由于您当前没有sample.txt在运行该命令的目录中看到所调用的文件。
  • 在不太可能发生的情况下,当前目录中既有一个名为的条目...,又有另一个sample.txt目录或指向目录的符号链接的条目,mv ... sample.txt则会尝试移动...到该sample.txt目录中(或移动到符号链接所针对的目录中)。

相关内容