linux 发现交换文件 ".swp"

本文介绍在Linux系统中使用vim编辑器时遇到的交换文件.swp问题及其解决办法。当文件非正常关闭后,再次打开时会出现交换文件提示。文章提供了两种解决方案:一是通过恢复文件并删除交换文件;二是直接删除交换文件。

linux 发现交换文件 ".swp"

原创  2017年06月23日 10:24:57

今天在linux里修改文件时,不小心非正常关闭了文件。再次打开的时候提示  E325: 注意发现交换文件 "filename.swp",具体报错如下:


E325: 注意
发现交换文件 ".nginx.conf.swp"
            所有者: root    日期: Fri Jun 23 09:44:19 2017
            文件名: /usr/local/src/nginx-1.1.10/conf/nginx.conf
            修改过: 是
            用户名: root      主机名: demo
           进程 ID: 5168
正在打开文件 "nginx.conf"
              日期: Fri Jun 23 09:57:15 2017
      比交换文件新!


(1) 另一个程序可能也在编辑同一个文件。
    如果是这样,修改时请注意避免同一个文件产生两个不同的版本。


    退出,或小心地继续。


(2) 上次编辑此文件时崩溃。
    如果是这样,请用 ":recover" 或 "vim -r nginx.conf"
    恢复修改的内容 (请见 ":help recovery")。
    如果你已经进行了恢复,请删除交换文件 ".nginx.conf.swp"
    以避免再看到此消息。


交换文件 ".nginx.conf.swp" 已存在!



原因如下:

在用vim打开一个文件时,其会产生一个cmd.swap文件,用于保存数据,当文件非正常关闭时,可用此文件来恢复,当正常关闭时,此文件会被删除,非正常关闭时,不会被删除,所以提示存在.swap文件。

解决方法如下:

方法1、此时你可以恢复文件:

vim -r nginx.conf

恢复以后把.swap文件删掉,在打开时就不会用提示良,注意.swap文件是个隐藏文件。可用:la查看。以.开头的是隐藏文件。

方法2、ls -a 查询隐藏文件


将后缀名为.swp的文件删除

rm -f .nginx.conf.swp

再次编辑文件不在出现提示警告!


<think> 我们正在寻找Linux系统中.swp文件的位置。.swp文件是Vim编辑器在编辑文件时创建的交换文件,用于保存编辑过程中的临时数据和恢复信息。根据之前的讨论,这些文件通常与原始文件位于同一目录下,但作为隐藏文件存在(以点号开头)。然而,用户可能希望在整个系统中搜索.swp文件。 我们可以使用find命令来搜索.swp文件。由于.swp文件通常以点号开头,并且通常以.swp结尾(有时也可能是.swo、.swn等,但.swp是最常见的),我们可以使用以下命令: 查找当前用户有权限访问的所有.swp文件: ```bash find / -name ".*.swp" 2>/dev/null ``` 解释: - `/`:表示从根目录开始搜索。 - `-name ".*.swp"`:匹配以点开头,以.swp结尾的文件名。 - `2>/dev/null`:将错误信息(如权限不足)重定向到/dev/null,避免输出大量权限错误。 但是,需要注意的是,Vim的交换文件默认存储在原始文件所在的目录中,并且文件名通常是`.filename.swp`(例如,编辑文件`test.txt`时,交换文件为`.test.txt.swp`)。有时,Vim也可能将交换文件放在统一的目录(如`~/.vim/tmp`)中,但这需要用户自定义设置。 另外,如果用户只想查找当前目录及其子目录下的.swp文件,可以: ```bash find . -name ".*.swp" 2>/dev/null ``` 此外,我们还可以使用更宽泛的模式,因为有些交换文件可能不以点号开头(虽然不常见,但取决于配置),或者我们也可以匹配其他后缀(如.swo): ```bash find / -name "*.sw[op]" 2>/dev/null ``` 但是,考虑到用户明确提到.swp文件,且通常以隐藏文件形式存在,我们首先使用以点开头的模式。 另外,在用户的主目录下,Vim可能会在特定目录存放交换文件,例如`~/.vim/tmp`(如果配置了`directory`选项)。所以,也可以检查这个目录。 因此,我们可以建议用户使用以下步骤: 步骤1:在整个系统中搜索(需要sudo权限以避免权限问题): ```bash sudo find / -type f -name ".*.swp" 2>/dev/null ``` 步骤2:如果不想使用sudo,可以只搜索用户有权限的目录,如: ```bash find $HOME -name ".*.swp" 2>/dev/null ``` 步骤3:检查Vim的临时文件目录(如果配置了的话)。通常,Vim的交换文件位置由`directory`选项决定,可以通过在Vim中运行`:set directory?`来查看。默认情况下,通常是当前目录或`~/.vim/tmp`(如果该目录存在)。 因此,我们也可以建议用户查看自己的Vim配置。 但是,用户的问题是“我想查找Linux系统中.swp文件所在的目录”,所以我们的重点是使用find命令。 另外,根据引用[1]中提到的awk命令,我们可以将find的输出通过管道传递给awk进行进一步处理,但这并不是必须的。 回答结构: 1. 解释.swp文件通常的位置。 2. 提供使用find命令搜索的几种方法。 3. 提醒用户可能需要sudo权限。 4. 建议用户检查Vim配置交换文件目录。 生成相关问题: 1. 如何防止Vim创建.swp文件? 2. 如何更改Vim交换文件的默认存储位置? 3. 如何安全删除不再需要的.swp文件? 4. 如何配置Vim在崩溃后自动恢复? 注意:根据引用[4],我们了解到Vim在Linux中的重要性,因此可以适当提及Vim的配置。 </think> 在 Linux 系统中,`.swp` 文件是 Vim 编辑器创建的**隐藏交换文件**,用于保存编辑会话的临时状态和恢复数据。这些文件通常位于以下位置: ### 主要存储位置 1. **与原始文件同目录**(最常见) - 默认情况下,Vim 会在被编辑文件的**同一目录**下创建隐藏的交换文件 - 命名规则:`.filename.swp`(在原文件名前加 `.` 和后缀 `.swp`) - 示例:编辑 `/home/demo.txt` 时,交换文件为 `/home/.demo.txt.swp` 2. **Vim 专用临时目录** - 若配置 `directory` 选项,文件可能存储在: ```bash ~/.vim/tmp/ # 当前用户专用 /var/tmp/vim/ # 系统级存储(需root权限) ``` - 通过 Vim 命令查看配置: ```vim :set directory? ``` ### 搜索.swp文件的命令 ```bash # 搜索整个系统(需sudo权限) sudo find / -type f -name "*.swp" 2>/dev/null # 搜索当前用户主目录 find ~ -type f -name ".*.swp" 2>/dev/null # 搜索指定目录(如/home) find /home -type f -name ".*.swp" 2>/dev/null ``` > **参数说明** > - `-type f`:只搜索文件 > - `-name ".*.swp"`:匹配隐藏的.swp文件 > - `2>/dev/null`:忽略权限错误提示 > - 使用 `sudo` 避免遗漏系统目录[^2] ### 关键特性 1. **隐藏属性**:所有交换文件均以 `.` 开头(如 `.file.txt.swp`) 2. **多版本支持**:持续编辑时可能生成 `.swo`, `.swn` 等序列文件 3. **自动删除**:正常退出 Vim 时交换文件会被自动清理 4. **进程绑定**:交换文件包含原进程 PID(如示例中的 `process ID: 22288`)[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值