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 函数,处理时间计算和标记逻辑。

➡️

继续阅读