Solarisの日付と同じ - 参照

Solarisの日付と同じ - 参照

このコマンドのGNU実装には、date参照ファイルの最後の変更日を表示する素晴らしい機能があります。その後、その+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悪い習慣として知られています。

より良い、よりシンプルで、よりエレガントなソリューションはありますか?

ベストアンサー1

現在の日付以外のdate日付を印刷できないことは、しばしば不幸な欠陥です。一部のユニスでは別の日付を印刷できますが、残念ながらSolarisではそうではありません。

数値出力のみが必要な場合は、出力を解析できますls -Ego。これらのオプションは-goユーザーとグループ名を抑制し、-ESolarisにのみ適用されます。lsこれにより、解析可能な形式で時間を表示できます。

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

(これはうまくいきます/usr/bin/lsが、POSIX準拠のawkが必要なので、/usr/xpg4/bin前または電話があることを確認してください。)/usr/xpg6/bin/usr/binPATHnawk

おすすめ記事