使用“ls”时如何将文件日期转换为特定格式

Nit*_*mar 3 ls coreutils timestamps files

我有以下输入数据:

-rw-rw-r--. 1 abmnyu abmnyu 0 Dec 30 07:06 ffd_in_imp_bus.dat
-rw-rw-r--. 1 abmnyu abmnyu 0 Dec 30 07:06 ffd_ik_imp_bus.dat
Run Code Online (Sandbox Code Playgroud)

我在使用时需要Dec 30以格式显示,如下图:20171230ls -l

-rw-rw-r--. 1 abmnyu abmnyu 0 20171230 07:06 ffd_in_imp_bus.dat
-rw-rw-r--. 1 abmnyu abmnyu 0 20171230 07:06 ffd_ik_imp_bus.dat
Run Code Online (Sandbox Code Playgroud)

cas*_*cas 7

如果您使用的是 GNU ls(这是 Linux 系统上的标准),它有一个--time-style可用于更改日期/时间格式的选项。

最接近您想要的内置格式是long-iso.

例如

$ ls -l --time-style=long-iso
total 1
-rw-r--r-- 1 cas cas 0 2017-12-30 21:26 ffd_ik_imp_bus.dat
-rw-r--r-- 1 cas cas 0 2017-12-30 21:26 ffd_in_imp_bus.dat
Run Code Online (Sandbox Code Playgroud)

您还可以使用与 GNU 中相同的日期格式规范来使用自定义格式date

$ ls -l --time-style='+%Y%m%d %H:%M'
total 1
-rw-r--r-- 1 cas cas 0 20171230 21:26 ffd_ik_imp_bus.dat
-rw-r--r-- 1 cas cas 0 20171230 21:26 ffd_in_imp_bus.dat
Run Code Online (Sandbox Code Playgroud)

来自man ls

--time-style=STYLE

with -l, 使用样式 STYLE: full-iso, long-iso, iso, locale, 或+FORMAT

FORMAT 被解释为“日期”

如果 FORMAT 是FORMAT1<newline>FORMAT2,则 FORMAT1 适用于非最近的文件,而 FORMAT2 适用于最近的文件。

如果 STYLE 以 为前缀posix-,则 STYLE 仅在 POSIX 语言环境之外生效