我有 Solaris 10 机器

我需要验证 Solaris 计算机中某些文件的时间戳

并得到以下格式

 [year][month][day]

Linux 上的工作命令示例

  ls -l --time-style=+%Y%m%d /etc/hosts | awk '{print $6}'
  20121107   <----- ( expected results )           
  • 备注 我无法在我的Solaris 机器上安装gnu ls!

在我的 Solaris 机器上,我尝试了以下命令,但它们都不起作用(因为 Solaris 标志与 Linux 不同),并且 stat 命令未在我的 Solaris 中定义

# ls -l -T -D %Y%m%d /etc/hosts
ls: illegal option -- T
ls: illegal option -- D
usage: ls -1RaAdCxmnlhogrtuvVcpFbqisfHLeE@ [files]

# stat /etc/hosts | awk '/Access/{print $2}' | tail -n1 | tr -d'' '-'
ksh: stat:  not found

请告知是否有其他方法可以获取文件的时间戳日期(不是通过 ls 或 stat 命令),也许可以使用 date 命令?为了给我解决方案,

如下:

   <solaris>   command /etc/hosts 

               [year][month][day]

答案1

在 Solaris (>= 10) 中,ls 命令具有 -E 选项。所以你的命令可以像 ls -E /etc/hosts 或一样 简单ls -E /etc/hosts | awk '{print $6}'| sed 's#-##g'

以获得所需的结果。

答案2

一种可移植的方法可以是:

perl -MPOSIX -le 'print strftime "%Y%m%d", localtime((lstat)[9]) for @ARGV' /etc/hosts

相关内容