使用 mv 命令后我的文件去了哪里?

使用 mv 命令后我的文件去了哪里?

我的所有.c源文件和一个Readme文件都位于assignment2名为 的目录中的子目录中Assignment2。最初,来自assignment2目录:

$ ls
corrupt.c  decode.c  encode.c  fix.c  Readme

然后我尝试将这些文件从assignment2目录移动到父目录Assignment2。我输入:

$ mv endocode.c Assignment2 
$ ls
Assignment2  corrupt.c  decode.c  fix.c  Readme

$ mv decode.c Assignment2
$ ls 
Assignment2  corrupt.c  fix.c  Readme

$ mv corrupt.c Assignment2
$ ls
Assignment2  fix.c  Readme

$ mv fix.c Assignment2
$ mv Readme Assignment2
$ ls
Assignment2

现在我最初调用的文件Readme被调用Assignment2,并且我找不到我的.c源文件。

我的文件去哪儿了?

答案1

正如其他人所说,不幸的是,它们已经消失了。该mv命令用预期的目的地重写了源。

正如 Jim 所说,记得在命令末尾添加/,如果目标不是目录,命令将失败。

/但是,这仍然不是万无一失的,因为它依赖于您记得在命令末尾添加。

您可以通过创建别名来防止这种情况再次发生。

mv为命令创建别名

  • 使用此解决方案,您将利用命令的-b--backup参数mv

  • alias mv=mv -b将创建目标文件的备份。因此,对于您来说,您将拥有一堆备份 Assignment2 文件。

  • alias mv=mv --backup=numbered这类似于上面的命令,但可以让您更好地控制备份的命名方式。老实说,我从来没有这样使用过,所以我不知道输出会是什么。

  • 对于 MAC 用户,-bmacOS 不支持该标志。我不知道原因。如果你想保护自己,你必须使用该-n标志。这会告诉命令不要覆盖任何现有文件。alias mv=mv -n

附加功能:还有其他更高级的选项如何撤消 MV 或 RM 命令?除了解释过的标志之外,我从未使用过这里列出的任何方法-b。我将尝试通读它们,测试它们,如果它们正常工作,稍后将它们添加到答案中。

相关内容