我正在使用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
答案 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
。