タイムゾーン情報

タイムゾーン情報

特定の形式のファイル修正時間を知りたいです。
どうすればいいですか?
私は知っています

stat -c %x find.txt

しかし、次の形式が必要です。

yyyymmddhh24miss

重要な場合kshLinux 2.6.18-406.el5 x86_64

ベストアンサー1

GNUツールの使用:

find file -prune -printf '%TY%Tm%Td%TH%TM%TS\n'

または

date -r file +%Y%m%d%H%M%S.%N

(ただし、シンボリックリンクの場合は修正時間が表示されます。ターゲットシンボリックリンク自体ではなくシンボリックリンクの時間(これはおそらくシンボリックリンクのランタイムに興味がある人と同じです。同じタスクの-L実行を参照)。find

あなたkshが組み込み機能を有効にして構築したksh93場合:date

command /opt/ast/bin/date -m -f %Y%m%d%H%M%S.%N file

command /opt/ast/bin/date呼び出しは、前に追加すると名前で呼び出されたときに自動的に呼び出される組み込みdate関数にバインドされます。)/opt/ast/bin/date/opt/ast/bin$PATH

少数の部分を気にしない場合は、または.%Nを削除してにfind置き換えてください。%TS%.2TS

時間は現在のタイムゾーンに基づいて表示されます。この日付形式にはUTCオフセットが含まれていないため、あいまいにすることができます。たとえば、英国本土のタイムゾーンでは、次のようになります。

$ date -r file1
Sun 30 Oct 01:00:00 BST 2016
$ date -r file2
Sun 30 Oct 01:00:00 GMT 2016

両方のファイルは3600秒間隔で修正されました。 1つは冬時間に変更される前で、もう1つは冬時間に変更された後でした。しかし、それでも壁時計の時間は同じです(時計が時間間隔から1時間後に移動したため)。

$ find file? -prune -printf '%TY%Tm%Td%TH%TM%TS\n'
20161030010000.0000000000
20161030010000.0000000000

明確な時間を得るためにUTCオフセットを含めることができます。

$ find file? -prune -printf '%TY%Tm%Td%TH%TM%TS%Tz\n'
20161030010000.0000000000+0100
20161030010000.0000000000+0000

またはUTC時間が与えられた場合:

$ TZ=UTC0 find file? -prune -printf '%TY%Tm%Td%TH%TM%TS\n'
20161030000000.0000000000
20161030010000.0000000000

おすすめ記事