我有一个文件,里面有一些凭证;出于某种原因,它现在被隐藏了。我可以在桌面上看到有两个文件夹。和..名称。它们是从哪里来的?我的文件是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
失败,并且不会发生任何变化。但根据您的描述,听起来好像曾是这样的文件。所以:
Downloads
如果当前目录中有一个名为的目录,则mv sample.txt Downloads
尝试移动sample.txt
到名为Downloads
,并且可能成功。如果Downloads
是指向目录的符号链接而非实际目录,也会发生这种情况。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
目录中(或移动到符号链接所针对的目录中)。