【Linux】日時をファイル名に含める
コマンド実行の手順書を作成したり、簡単なログファイルを出力するときに、実行時の日時をファイルやディレクトリの名前に入れたくなることがある。 いつも忘れてググることになるので、メモしておく。
環境
実施内容
ファイル名に入れたい日時の文字列は、dateコマンド出力できる。
dateコマンドに+で始まる書式を指定することで、フォーマットを変更できる。
$ date 2022年 4月 1日 金曜日 17:54:44 JST $ date "+%Y%m%d_%H%M%S_%3N" 20220401_180506_367
上記で使った書式の意味は以下。
書式 | 意味 |
---|---|
%Y | 西暦(4桁) |
%m | 月(01~12) |
%d | 日(01~31) |
%H | 時(00~23) |
%M | 分(00~59) |
%S | 秒(00~59) |
%3N | ミリ秒(000~999) |
シングルクォート付きでコマンドを埋め込むことで、そのコマンドの実行結果を使用することができる。 以下のようにすれば、作成するファイル名に日時に入れられる。
$ touch test_`date "+%Y%m%d_%H%M%S_%3N"`.txt $ ls test_20220401_180740_408.txt
cronに設定する際は「%」の前に「\」を入れてエスケープする必要があるので注意すること。
$ crontab -l # 毎分、存在するプロセスを日時名ログファイルに出力する処理 * * * * * /bin/ps aux > /tmp/`date "+\%Y\%m\%d_\%H\%M\%S_\%3N"`.log $ ls -1 *.log 20220401_181602_168.log 20220401_181701_808.log 20220401_181801_816.log 20220401_181901_826.log