设置特定日期时使用 touch -t 命令时出现问题

设置特定日期时使用 touch -t 命令时出现问题

我在终端中使用 touch -t 命令时遇到问题。我的目标是将名为“testShell00”的文件的访问和修改日期调整为 MMDDhhmm[.ss] 格式的特定日期。但是,我得到了意想不到的结果。

以下是我正在做的一些例子:

此命令按预期工作,以所需的格式(月、日和小时)显示日期:

touch -a -m -t 12180130.09 testShell00

ls -l 的结果:

-rw-r--r--  1 jonatha  staff  40 Dec 18 01:30 testShell00

但是,当使用不同的日期时,结果会显示全年,即使我只提供了月、日和小时:

touch -a -m -t 06012342.00 testShell00

ls -l 的结果:

-rw-r--r--  1 jonatha  staff  40 Jun  1  2023 testShell00

我很困惑为什么第二个例子没有以所需的格式(月、日、小时)显示日期而是显示全年。

有人可以解释这种行为的原因以及我如何纠正它以获得所需的格式吗?

谢谢您的帮助!

答案1

man ls

日志格式:如果文件的修改时间是过去或未来 6 个月以上,并且未指定 -D 或 -T,则显示最后修改的年份来代替小时和分钟字段。

这不是你,而是他们。有点。无论如何,这是一个 ls 格式规则。

答案2

使用ls检查文件元数据 是您出错的地方。请stat改用。阅读man stat。尝试:stat -c '%n %t' testShel00

相关内容