UNIX 中的日期格式

UNIX 中的日期格式

如何在 LINUX 中以 YYYY-MM-DDTHH:MM:SS+ZZZZ 格式显示日期?我需要以给定格式将文件(例如 file1)的创建日期写入另一个文件(例如 file2)中。请帮我实现这一点。

答案1

您所指的日期格式是 ISO 8601。使用命令-I的选项date根据此格式格式化日期(s指定精度达到整数秒):

$ date -Is
2013-10-08T10:48:03+0300

要获取文件的最后修改时间(自纪元以来的秒数),请使用以下命令%Y的格式说明符stat

$ stat -c %Y file1
1378818806

结合这两者,用于date -d格式化输出stat -c

$ date -Is -d @`stat -c %Y file1`
2013-09-10T16:13:26+0300

因此,这是完成您需要的操作的语句:

$ date -Is -d @`stat -c %Y file1` > file2

答案2

您可以使用以下命令来显示日期:

$ date +%Y-%m-%dT%H:%M:%S%z
2013-10-08T07:38:45+0200

许多文件系统不存储文件创建日期,因此并不总是有方法可以获取它。如果文件自创建以来从未被修改过,那么这将有效:

$ date -r file1 +%Y-%m-%dT%H:%M:%S%z > file2
$ cat file2
2013-10-08T07:32:52+0200

答案3

结合我的上一个答案@jlliagre 的,做你想做的事的最简洁的方法是:

date -Is -r file1 > file2

答案4

这对你有帮助吗?

ls -c -l file1 --time-style="+%Y-%m-%dT%H:%M:%S%z" > file 2

相关内容