Shell

Solaris 中的日期–reference 等價物

  • December 20, 2014

date命令的 GNU 實現有一個很好的功能,可以顯示參考文件的最後修改日期。然後使用+FORMAT參數很容易獲取任何格式的日期,例如:

date -r /etc/motd +%Y%m%d_%H%M%S
# output in the format: 20121001_171233

在 Solaris 中是否有類似的功能?作為一種解決方法,我使用這樣的stat功能來做到這perl一點:

perl -mPOSIX -e 'print POSIX::strftime("%Y%m%d_%H%M%S\n", localtime((stat("/etc/motd"))[9]))'

另一種選擇是解析的輸出ls -Ego

ls -Ego /etc/motd | awk '{print $4 "_" $5}' | tr -d :- | sed -e 's/\..*//'

但眾所周知,解析 的輸出ls是一種不好的做法。

有更好/更簡單/更優雅的解決方案嗎?

除了目前日期之外,無法date列印任何內容是一個令人遺憾的缺陷。一些 unice 允許它列印其他日期,但遺憾的是你不是 Solaris。

只要只需要數值輸出,就可以解析ls -Ego. 這些選項-go不包含使用者名和組名,並且-E是一個特定於 Solaris 的選項ls,使其以可解析的格式顯示時間。

ls -Ego /path/to/file |
awk 'NR==1 {$0 = $4 "_" $5; gsub(/[-:]/,""); sub(/\..*/, ""); print}'

(這適用於/usr/bin/ls但需要符合 POSIX 的 awk,因此請確保在您的, 或呼叫之前有/usr/xpg4/binor 。)/usr/xpg6/bin``/usr/bin``PATH``nawk

引用自:https://unix.stackexchange.com/questions/50557