UNIX ls -l日期格式有所不同

时间:2018-11-08 04:42:35

标签: shell unix ls

我正在使用SunOS 5.10。我希望将“ ls -l”的内容定向到可以读入数据库的文件中。但是,时间格式会有所不同。下面是ls -l输出的示例。为什么文件ls_txt.sh和nohup.out带有时间戳而不是年份值?

-rw-rw-r--   1 gilmog   other         57 Jul 25  2017 fnd2.txt
-rw-rw-r--   1 gilmog   other        702 Jan 24  2018 handySh
-rw-rw-r--   1 gilmog   other        189 Nov  7 23:20 ls_txt.sh
-rw-------   1 gilmog   other       3915 Sep 12 03:58 nohup.out
-rw-rw-r--   1 gilmog   other       1655 Jan 24  2018 npiFn.sas  

1 个答案:

答案 0 :(得分:1)

警告:请勿解析ls的输出。其输出用于人类消费,以了解文件系统的内容。如果您希望程序知道有关文件的时间信息,请使用stat 1


现在,解决了,我将回答您的问题。时间会有所不同,因为这就是它的定义工作方式。来自the POSIX documentation on ls

  

该字段应包含文件上次修改的适当日期和时间戳。在POSIX语言环境中,该字段应等于以下日期命令的输出:

     

date "+%b %e %H:%M"

     

如果文件在最近六个月内已修改,或者:

     

date "+%b %e %Y"

     

(在%e和%Y之间使用两个字符),如果文件在过去六个月中没有被修改,或者如果修改日期是将来的日期,则在两种情况下,最终文件均按日期生成不应包括在内,并且输出应类似于在文件的最后修改日期而非当前时间执行了date命令。如果LC_TIME语言环境类别未设置为POSIX语言环境,则可以使用此字段的其他格式和显示顺序。

此定义使程序无法解析。 因此,重申一下:不要解析ls输出。


1 如果Solaris框上没有stat,则可能只需要依靠ls。对不起。该命令大约为ls -siv -@ -/ c -%all z