如何修改文件而不更新修改时间?

ale*_*xis 4 timestamps

有时我想对文本文件进行较小的编辑(例如,修复拼写错误),但我想保持其修改时间不变。(动机:modtime 对于按时间顺序列出目录、告知文件内容最后一次实质性更新的时间等很有用。我不希望通过简单的编辑来删除此信息。)

这当然是可能的:Unix 允许我手动将 modtime 设置为我想要的任何内容(这确实将 ctime 设置为现在,这对我来说没问题)。例如,使用touch -t <time>、 或utimes(2)系统调用。这个问题是关于一种简单的方法来编辑文件,然后将修改时间设置为编辑前时间。我主要对与编辑器无关的解决方案感兴趣,即,如果 emacs 有命令save-file-no-update-mtime,那很有趣,但不是我正在寻找的。

ale*_*xis 5

这是一个相当简单的解决方案,基于@don_crissti 发现的相关问题的答案。但我希望得到一些不使用额外文件的东西——有人能做得更好吗?

touch -r some-file.txt .timestamp 
emacs some-file.txt  # Or whatever
touch -r .timestamp some-file.txt 
rm .timestamp
Run Code Online (Sandbox Code Playgroud)