date コマンドの出力フォーマットに %N を指定するとナノ秒が表示できる。ミリ秒を表示するには上位3桁分だけ表示するように %3N を指定すればいい。
%N は GNU Coreutils の拡張なので GNU ではない date コマンドでは使えない。
GNU Coreutils: Time conversion specifiers
‘%N’
nanoseconds (‘000000000’…‘999999999’). This is a GNU extension.
例えば以下のシェルスクリプトでは「年月日_時分秒_ミリ秒」のフォーマットで日時を表示することができる。
#!/bin/sh
DATETIME=`date +%Y%m%d_%H%M%S_%3N`
echo $DATETIME
シェルスクリプトを何度か実行した例。
$ ./foobar.sh
20170726_123413_433
$ ./foobar.sh
20170726_123413_664
$ ./foobar.sh
20170726_123413_888
$ ./foobar.sh
20170726_123414_129
$ ./foobar.sh
20170726_123414_361
$ ./foobar.sh
20170726_123414_576