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

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

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

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

答案1

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

touch -r some-file.txt .timestamp 
emacs some-file.txt  # Or whatever
touch -r .timestamp some-file.txt 
rm .timestamp

相关内容