特定の形式のファイル修正時間を知りたいです。
どうすればいいですか?
私は知っています
stat -c %x find.txt
しかし、次の形式が必要です。
yyyymmddhh24miss
重要な場合ksh
。Linux 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