如何在 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