jan*_*nos 6 shell solaris stat date
该date命令的 GNU 实现有一个很好的功能,可以显示参考文件的最后修改日期。然后使用该+FORMAT参数可以轻松获取任何格式的日期,例如:
date -r /etc/motd +%Y%m%d_%H%M%S
# output in the format: 20121001_171233
Run Code Online (Sandbox Code Playgroud)
在 Solaris 中是否有类似的东西?作为一种解决方法,我使用这样的stat功能来做到这perl一点:
perl -mPOSIX -e 'print POSIX::strftime("%Y%m%d_%H%M%S\n", localtime((stat("/etc/motd"))[9]))'
Run Code Online (Sandbox Code Playgroud)
另一种选择是解析输出ls -Ego:
ls -Ego /etc/motd | awk '{print $4 "_" $5}' | tr -d :- | sed -e 's/\..*//'
Run Code Online (Sandbox Code Playgroud)
但ls众所周知,解析 的输出是一种不好的做法。
有更好/更简单/更优雅的解决方案吗?
除了当前日期之外无法date打印任何内容是一个经常令人遗憾的缺陷。有些 unice 允许它打印其他日期,但遗憾的是 Solaris 不允许。
只要你只需要数字输出,你就可以解析 的输出ls -Ego。这些选项-go抑制用户名和组名,并且-E是 Solaris 特定的选项,可ls使其以可解析的格式显示时间。
ls -Ego /path/to/file |
awk 'NR==1 {$0 = $4 "_" $5; gsub(/[-:]/,""); sub(/\..*/, ""); print}'
Run Code Online (Sandbox Code Playgroud)
(这适用于/usr/bin/ls但需要符合 POSIX 标准的 awk,因此请确保在, 或 call之前有/usr/xpg4/bin或。)/usr/xpg6/bin/usr/binPATHnawk