You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sed -i编辑文件时生成临时文件,如何禁用?

关于sed -i生成临时文件的问题

问题背景

你在脚本中使用以下sed命令编辑文件:

sed -i -e /NumberOfEntries=*/d "$playlist_name" > /dev/null   # 删除包含NumberOfEntries=的行
sed -i -e '/^$/d' "$playlist_name" > /dev/null   # 删除所有空行

命令可正常工作,但执行过程中及执行后短时间内会出现类似sedJjHEt2的随机命名临时文件,带有锁标记和红色叉号,想知道:

  • 是否可以禁用这类临时文件?
  • 是否是-i选项导致的?

解答

1. 临时文件确实由-i选项导致

GNU sed的-i(就地编辑)选项的工作机制就是:

  • 先将处理后的内容写入一个随机命名的临时文件
  • 处理完成后,用临时文件替换原文件
  • 最后自动删除临时文件

之所以用临时文件,是为了保护原文件的完整性——如果sed在处理中途崩溃,原文件不会被破坏,只会留下未清理的临时文件。

2. 无法禁用临时文件生成

这是-i选项的核心安全机制,没有办法直接禁用。强行绕过这个机制(比如直接写入原文件)会带来数据损坏的风险,不建议尝试。

3. 优化方案:减少临时文件数量

你当前的命令执行了两次sed -i,会生成两次临时文件。可以把两个编辑操作合并成一次执行,这样只会生成一个临时文件,同时提升效率:

sed -i -e '/NumberOfEntries=.*/d' -e '/^$/d' "$playlist_name" > /dev/null

通过多个-e参数传递编辑脚本,一次完成两个删除操作,减少临时文件的生成次数,也降低了残留的概率。

补充说明

如果偶尔出现临时文件残留(比如进程被意外中断),手动删除即可;正常执行完成后,sed会自动清理这些临时文件。

内容的提问来源于stack exchange,提问作者Davider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:55:46