意外从文件中删除

意外从文件中删除

我正在编辑vi

我尝试将论文的一小部分复制到临时文件中

.,.+40!temp.  

但我写了

.,.+40!.  

因此,这删除了文件中重要内容的所有内容(除了那 40 行)。有什么方法可以检索我原来拥有的文件(大约 30 页)还是我必须从头开始?

答案1

我不熟悉您使用的命令,但如果您尚未退出vi,该U命令应该撤消更改。

否则,按期望值降序排列:

  • 在某些情况下,文件的先前版本将被保存为filename.ext~(可能不是您的情况,或者您甚至没有发布,但仍然值得一试)。

  • 该文件及其交换的先前版本可能可以使用恢复扩展删除,如果您的文件系统允许(ext3 或 ext4)。如果只有交换是可恢复的,strings则可用于提取大片文本。您仍然需要重新组装它们,但这与从头开始重写完全不同。

  • 否则,如果您记住一些关键词或短语,则可以恢复大部分文本。这可能是一个相当漫长的操作。您可以将整个分区筛选到stringsviadd并将输出发送ssh到另一台计算机,以免冒覆盖本地磁盘可用空间的风险(如果您有另一个可用分区,请务必使用它)。

  • 同样,如果系统没有重新启动,您具有 root 访问权限,并且 /proc/kcore 伪文件的大小合理,您可以使用 从中提取原始文本strings并将其转储到文件中。那么grep就会成为你的朋友。可能,其他方法您可以使用访问内存的方法。

答案2

如果您尚未保存任何内容,请按撤消键“U”。

您还可以尝试检查交换文件。它应该命名为yourfilename.swp 或,在同一目录中 或。请务必使用 名称开头的情况.yourfilename.swp/var/tmpls -la.

制作一份副本并打开以检查其内容。

答案3

如果会话vi仍处于打开状态,该命令:e!将立即将文件恢复到上次保存的版本(如果您刚刚打开并编辑,它将恢复为您打开文件时看到的相同版本)。 U即使您保存了更改,(撤消)也会起作用,但是您必须撤消每个操作,直到达到所需的版本(我现在不记得撤消操作是否有限制......或者有多少)

相关内容