UnixまたはLinuxでdd / mm / yyyy_hh:mm:ss:msにタイムスタンプを表示


26

Unix / Linuxで希望の形式で日付と時刻を表示する必要があります。希望する形式は、dd / mm / yyyy hh:mm:ss:ms(UnixまたはLinux)です。次のコマンドを使用して親しくなりました。

echo $(date +%x_%r)

これは返します:

08/20/2012_02:26:14 PM

助言がありますか?


2
使用している理由はありますechoか?冗長なようで、date直接使用できます
lk-

現在の時刻をパラメーターに保存し、出力ファイル名の一部として使用する予定です。
ハンク

6
ISO形式の日付文字列を使用しないのはなぜですか?これら/ファイル名には良い...(ではないen.wikipedia.org/wiki/ISO_8601
ヨハン

このリンクを参照してください:ccollins.wordpress.com/2009/01/06/…

最も一般的な形式:zxq9.com/archives/795
zxq9

回答:


26
date +%x_%H:%M:%S:%N

最初の2つの数字のみをmsとして印刷する必要がある場合:

date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/'

varに保存するには:

VAR=$(date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/')

1
これはLinux固有です。OS Xまたは* BSDでは機能しません。
cnst

注%xは、ロケールの日付表現を返します。そのため、現在のロケールに基づいて変更できます。特定の日付形式が必要な場合は、明示的に指定することをお勧めします(他の回答も以下に示すように)date +'%d/%m/%Y_%H:%M:%S:%N
スタッドギーク

23

ナノ秒の精度ではなくミリ秒が必要な場合は、次の%3N代わりに使用できます%N

$ date +'%d/%m/%Y %H:%M:%S:%3N'
12/04/2014 18:36:20:659

または以下を使用してください$(…)

$ echo "$(date +'%d/%m/%Y %H:%M:%S:%3N')"
12/04/2014 18:36:20:659

ただし%N、ターゲットシステムまたはbashのバージョンによっては実装されない場合があることに注意してください。組み込みシステムでテスト済み»GNU bash、バージョン4.2.37(2)-release(arm-buildroot-linux-gnueabi)«なし%N(どちらでもない %3N):

date +"%F %T,%N"
2014-01-08 16:44:47,%N

2
FreeBsdもMac Osxもをサポートしてい%Nないよう%3Nです。
ジョー

を追加しましたecho "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txtfile.file 08:21:02OURCE:184 Failed、ログファイルに書き込みました。私は何を間違えましたか?
スヴェン



0

このようなもの

日付+ '%d /%m /%Y_%H:%M:%S:%N'

ミリ秒を見つけられなかったため、ナノ秒(000000000..999999999)に%Nを使用しました


0

あなたが試すことができます:

echo `date +"%Y_%m_%d %H:%M:%S,"``date +%N/1000000|bc -l|grep -Eo "^([0-9]{0,3})"`

何らかの理由で '`'が省略されているため、エコーの後と最後に配置するか、単に次のようにします。

date +"[%Y_%m_%d %H:%M:%S,%3N]"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.