Shell
Solaris 中的日期–reference 等價物
該
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/bin
or 。)/usr/xpg6/bin``/usr/bin``PATH``nawk