示例代码:
modified_time=`ls -lt core* | head -1 | awk '{print $6,$7,$8}'`
echo modified time = $modified_time
我试图在aix框的下面命令的帮助下,在几秒钟内转换文件的最后修改时间
t2=`date +'%s' -d "$modified_time"`
echo t2 = $t2
注意:我发布的代码正在使用bash上的cygwin。但它在AIX上给出错误(ksh)。 我收到以下错误:
egdev04{stc}[/home/stc]% t2=`date +'%s' -d "$modified_time"`
Invalid character in date/time specification.
Usage: date [-u] [+Field Descriptors]
有人可以让我知道代码的哪一部分是错的,并建议需要使用的代码。
答案 0 :(得分:1)
不幸的是,date(1)
实际上很难被标准所覆盖,尤其是在过时的系统上,例如AIX(没有双关语)。
即使在现代GNU / Linux vs BSD系统上,也有不同的键来实现您尝试调用的行为:
GNU日期有一个关键:
-d, --date=STRING
display time described by STRING, not 'now'
BSD日期将使用两个密钥和特殊调用:
date [-jnRu] -f input_fmt new_date [+output_fmt]
-j Do not try to set the date. This allows you to use the -f flag
in addition to the + option to convert one date format to
another.
-f Use input_fmt as the format string to parse the new_date provided
rather than using the default [[[[[cc]yy]mm]dd]HH]MM[.ss] format.
Parsing is done using strptime(3).
AIX似乎没有包含这些设施中的任何一个。所以,最终,如果你真的需要,你必须用某种脚本语言执行微脚本,比如Perl / Ruby / Python /等。
向后退一步,解析ls(1)
的结果总是一个非常糟糕的主意,因为它们往往根据特定的操作系统实现,语言环境,输出格式和人类可读的#34;而变化很大。如果您真的只想获得一些文件修改时间,为什么不使用stat(1)
?可能它在AIX上可用吗?像
stat -c '%Y' "$file"
似乎解决了你的任务。