如何将交换文件(.swp)合并到原始文件?

如何将交换文件(.swp)合并到原始文件?

我从 bash 运行一个程序,并将其输出重定向到文件 (test.out)。该进程由于某些问题(在此上下文中这些问题并不重要)而终止,现在我剩下两个文件:

  • 原始输出文件大小test.out为 2.1 GB,并且
  • 生成的交换文件大小.test.out.swp为 19 MB

有没有办法合并这些文件,比如将交换文件附加到原始文件的末尾?

或者,我这样做是错误的吗?交换文件的用途与用于输出/日志的用途不同吗?

答案1

Vim 使用 .swp 文件作为未完成工作的存储区域,这样即使内存无法完全容纳,它也可以编辑非常大的文件。这是从计算机 RAM 非常小的时代遗留下来的,内存无法容纳的大文件更为常见,但它仍然存在,这意味着我们可以编辑数 GB 的文件,而不会耗尽所有可用 RAM 或终止进程。Vim 在完成编辑后会删除 .swp 文件,如果进程异常退出,则保留该文件。

如果你有一个 .swp 文件和一个原始文件,你恢复丢失的工作。记录如下:

http://vimdoc.sourceforge.net/htmldoc/recover.html

要恢复文件,只需打开原始文件。vim 将注意到该文件已有一个 .swp 文件关联,并会向您发出警告并询问您要做什么。假设您具有写入文件所需的权限,“恢复”应该是给出的选项之一。

或者,您可以启动一个新的 vim 实例(在空白文档上)并使用:recover <file>指出要恢复的文件的命令。

请注意,.swp 文件的主要用途是作为 vim 的临时存储,使其能够编辑大型文件,而不是恢复。因此,vim 不会记录对文件的写入,如果在编辑期间断电,.swp 文件可能会损坏。幸运的是,vim 中的恢复工具对部分损坏的 .swp 文件具有相当的容忍度,并且仍会尝试尽可能多地恢复文件的丢失更改。???在恢复的文件中查找三个问号:,因为只要在 .swp 文件中发现损坏,就会插入这些问号。

对恢复结果满意后,您需要手动删除 .swp 文件,以确保在编辑文件时不会继续收到警告。注意不要再次运行恢复过程。

答案2

直接回答

从技术角度回答你的问题:

cat test.out > experiment.out
cat .test.out.swp >> experiment.out

cat该命令的第一次重定向会创建一个新文件。该命令>的第二次重定向会将文件附加到现有文件。cat>>

但实际上experiment.out可能无法使用,因为你是在把苹果加到橘子里。


替代修复

您可以通过谷歌搜索修复文件:Superuser.com 我如何从 .swpfile 恢复原始文件?简而言之:

vim -r .swp

首先复制所有文件!

如果这不起作用,我会gedit在单独的选项卡中使用两个文件,然后在第三个选项卡中粘贴从前两个选项卡复制的文本。

相关内容