Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

printfコマンドの内部でdatefmtを適用する

printfはbashのビルトインの一つですが、その実装で日付数値を出す特別な構文が備わっています。
これはビルトインの一部なので、サブコマンドでdateを実行するより速いという利点があります。

実際のところ

"%{datefmt}T"という、少々変わった構文を使います。

$ printf '%(%F)T\n'
2021-11-15

ビルトインなのでサブシェルを起動するより高速

~$  time printf '%(%F)T'
2021-11-15
real    0m0.001s
user    0m0.000s
sys     0m0.000s

~$ time printf $(date +%F)
2021-11-15
real    0m0.007s
user    0m0.000s
sys     0m0.016s