使用 ls 更改文件时间戳并显示小时而不是年份

使用 ls 更改文件时间戳并显示小时而不是年份

我想将文件的日期更改为明天 21:00。我使用触摸,但当我键入时,ls -l显示文件的年份而不是小时。

-rw-r--r-- 1 ABCD DEF   0 sept. 30  2014 test01
-r-xr-xr-x 1 ABCD DEF   15 sept. 29 09:26 test02

例如,我们可以清楚地看到“2014”,但看不到“21:00”。奇怪的是,当我执行时,touch --date "1 hour ago" test01它显示正确,但touch --date "+1 hour" test01不起作用。此外,使用 emacs 编辑文件并保存将显示小时而不是年份。

这正常吗?如何在不使用 ls 中的参数也不更改计算机配置的情况下更改此行为? (这是为了挑战)

答案1

ls有两种时间显示格式:

  • 对于过去 6 个月的时间戳:月、日、小时、分钟。
  • 对于其他时间戳(未来或 6 个月以上):年、月、日。

目的是获得水平空间,而不是让用户被信息淹没。显示“从今年开始”比显示当前年份并让用户注意到确实是当前年份更明显。对于非常旧的文件来说,一天中的确切时间并不重要。未来的日期很少见。

GNU 语言有一个选项--full-time可以显示完整的文件时间(年、月、日、小时、分钟、秒、纳秒、时区偏移量),无论该时间是什么时候。您可以使用选项调整输出格式--time-style

答案2

问题解决了。问题是,如果日期是将来的日期,它将显示年份而不是小时。

这是一个简单的例子:touch filel给出

-rw-r--r-- 1 ABCD DEF 0 sept. 29 12:01 file

这是正常的。不要尝试将日期更改为未来 15 秒:touch --date "+15 seconds" file并且立即ls -l

-rw-r--r-- 1 ABCD DEF 0 sept. 29  2014 file

15 秒后,同样ls -l给出

-rw-r--r-- 1 rius_b users 0 sept. 29 12:03 file

相关内容