如何在Unix(包括Year)中获取文件的修改日期?

时间:2014-01-02 06:55:06

标签: unix

我正在寻找一个命令来获取Unix中文件的修改日期,包括 year 字段而不使用stat,因为我们使用的是SunOS 5.10。

目前我正在使用

ls -lrt A.sh

我们得到以下详细信息:

-rw-r--r--   1 dev   dev       593 Jan  1 02:18 A.sh

我怎样才能获得这一年?

4 个答案:

答案 0 :(得分:1)

由于这是一个编程 Q& A网站,我只想实现一个小型C程序,该程序使用stat调用来提取信息。

它为您提供struct stat结构,其中包含time_t值,用于访问,修改和状态更改时间。

然后,您可以使用localtime将其转换为struct tm结构并提取输出的相关字段(来自内存,tm_year + 1900tm_mon + 1和{{1}如果你需要的话,加上时间的那些)。

答案 1 :(得分:1)

这是一种有点晦涩的方式:

truss -t lstat64 -v lstat64 /bin/ls A.sh 2>&1 |
    nawk '/mt =/ {printf("%s %2s %s %s %s\n",$3,$4,$5,$6,$7);}'

答案 2 :(得分:0)

你可以试试这个,

perl -MPOSIX -le 'print strftime "%d %b %Y %H:%M ".$_, localtime((lstat)[9]) for @ARGV' a.sh

答案 3 :(得分:0)

ls--time-style选项:

--time-style=STYLE
       with -l, show times using style STYLE: full-iso, long-iso, iso, locale, or +FORMAT; FORMAT is  inter‐
       preted like in 'date'; if FORMAT is FORMAT1<newline>FORMAT2, then FORMAT1 applies to non-recent files
       and FORMAT2 to recent files; if STYLE is prefixed with 'posix-', STYLE takes effect only outside  the
       POSIX locale

包含预加载的格式,例如long-iso

ls -lrt --time-style=long-iso A.sh
-rw-r--r--   1 dev   dev       593 2014-01-02 02:18 A.sh

或者您可以根据date

的格式定义自己的格式
ls -lrt --time-style="+%Y-%m-%d %a %T" A.sh
-rw-r--r--   1 dev   dev       593 2014-01-02 Tue 02:18:00 A.sh