如何在 LINUX 中以 YYYY-MM-DDTHH:MM:SS+ZZZZ 格式显示日期?我需要在给定格式的另一个文件中写入文件的创建日期,例如 file1。帮助我实现这一目标。
zwe*_*ets 13
您所指的日期格式是 ISO 8601。使用命令的-I选项date根据此格式格式化日期(s指定精度高达整数秒):
$ date -Is
2013-10-08T10:48:03+0300
Run Code Online (Sandbox Code Playgroud)
要获取文件的最后修改时间(自纪元以来的秒数),请%Y在stat命令中使用格式说明符:
$ stat -c %Y file1
1378818806
Run Code Online (Sandbox Code Playgroud)
结合这两者,用于date -d格式化输出stat -c:
$ date -Is -d @`stat -c %Y file1`
2013-09-10T16:13:26+0300
Run Code Online (Sandbox Code Playgroud)
所以这是满足您需要的语句:
$ date -Is -d @`stat -c %Y file1` > file2
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令以这种方式显示日期:
$ date +%Y-%m-%dT%H:%M:%S%z
2013-10-08T07:38:45+0200
Run Code Online (Sandbox Code Playgroud)
许多文件系统不存储文件创建日期,因此并不总是有获取它的方法。如果文件自创建以来从未被修改过,这将起作用:
$ date -r file1 +%Y-%m-%dT%H:%M:%S%z > file2
$ cat file2
2013-10-08T07:32:52+0200
Run Code Online (Sandbox Code Playgroud)