不小心使用 mv 使文件消失。我应该在哪里寻找它?

met*_*Dev 3 filesystem command-line files hidden-files

我有一个文件,里面有一些凭据;出于某种原因,它现在被隐藏了。我可以在我的桌面上看到有两个文件夹..名字。哪儿来的?我的文件是sample.txt. 我搞砸了 mv 命令,文件被隐藏了。现在,我想弄清楚我的文件在哪里。

我需要帮助!

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

1861  mv sample.txt Downloads
1872  find sample.txt
1887  mv .. sample.txt
1888  mv ... sample.txt
Run Code Online (Sandbox Code Playgroud)

Eli*_*gan 5

这里的问题是,诸如mv source target, whentarget不以 a 结尾的命令的行为/取决于是否存在名为 的现有目录(或指向目录的现有符号链接)target。有时,这会使他们做的事情与您的预期不同。

你展示了四个命令。第一个命令很重要:

mv sample.txt Downloads
Run Code Online (Sandbox Code Playgroud)

该命令已移动或重命名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。)

in 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目录(或符号链接的目标目录)。