我正在寻找一个命令来获取Unix中文件的修改日期,包括 year 字段而不使用stat
,因为我们使用的是SunOS 5.10。
目前我正在使用
ls -lrt A.sh
我们得到以下详细信息:
-rw-r--r-- 1 dev dev 593 Jan 1 02:18 A.sh
我怎样才能获得这一年?
答案 0 :(得分:1)
由于这是一个编程 Q& A网站,我只想实现一个小型C程序,该程序使用stat
调用来提取信息。
它为您提供struct stat
结构,其中包含time_t
值,用于访问,修改和状态更改时间。
然后,您可以使用localtime
将其转换为struct tm
结构并提取输出的相关字段(来自内存,tm_year + 1900
,tm_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