TIL: dired 里按时间标记文件——dired-mark-if 与夏令时陷阱
💡
原文中文,约3000字,阅读约需8分钟。
📝
内容提要
本文介绍了在 Dired 中按修改时间标记文件的技巧,重点是使用 dired-mark-if 宏和处理夏令时问题。提供了代码示例,强调了正确的时间计算顺序:先减天数,再清零时分秒,以避免夏令时切换带来的错误。
🎯
关键要点
- 在 Dired 中按修改时间标记文件的技巧,使用 dired-mark-if 宏。
- dired-mark-if 宏接受两个参数:谓词表达式和描述字符串,遍历 Dired buffer 中的每一行进行标记。
- 处理夏令时问题时,计算截止时间的顺序很重要:先减天数,再清零时分秒。
- 错误的时间计算顺序可能导致夏令时切换时的时间偏移。
- 提供了完整的代码示例,说明如何在 Dired 中标记最近修改的文件。
❓
延伸问答
如何在 Dired 中按修改时间标记文件?
可以使用 dired-mark-if 宏,传入谓词表达式和描述字符串来标记文件。
dired-mark-if 宏的参数是什么?
dired-mark-if 宏接受两个参数:谓词表达式和描述字符串。
处理夏令时问题时,时间计算的正确顺序是什么?
正确的顺序是先减天数,再清零时分秒。
为什么要先减天数再清零时分秒?
这样可以避免在夏令时切换时出现时间偏移的问题。
如何避免 Dired 中的夏令时陷阱?
通过正确的时间计算顺序,先减天数再清零时分秒,可以避免夏令时的影响。
能否提供 Dired 中标记文件的完整代码示例?
完整代码示例包括定义 dired-mark-recent 函数,处理时间计算和标记逻辑。
➡️