コマンドを実行しようとしていますが、出力ファイル名に日付と時刻を入れたいのですが。
実行したいサンプルコマンドを次に示します。
md5sum /etc/mtab > 2016_4_25_10_30_AM.log
日付と時刻の形式は、アンダースコアを使用して適切なものにすることができます。 AMとPMが使用できない場合、UTCでも使用できません。
現在の日時をファイル名として使用する場合は、date
および コマンド置換 を使用できます。
$ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"
これにより、2016_04_25_10_30_AM.log
のmd5ハッシュをコンテンツとして使用して、ファイル/etc/mtab
(ただし、現在の日時)が作成されます。
12時間形式のタイムスタンプを含むファイル名は、名前で並べ替えられないことに注意してください。代わりに24時間形式のタイムスタンプを使用することで、この問題を回避できます。
特定の日付形式を使用する必要がない場合は、ISO 8601準拠の日時形式の使用を検討してください。有効なISO 8601日時表現を生成する方法の例には、次のものがあります。
$ date +"%FT%T"
2016-04-25T10:30:00
$ date +"%FT%H%M%S"
2016-04-25T103000
$ date +"%FT%H%M"
2016-04-25T1030
$ date +"%Y%m%dT%H%M"
20160425T1030
「Windowsとの互換性などのために」より安全なファイル名が必要な場合は、時刻部分からコロンを省略できます。
上記の例はすべてローカルシステム時間を想定していることに注意してください。タイムゾーン全体で一貫した時間表現が必要な場合は、タイムゾーンオフセットまたはUTCを指定する必要があります。次のようにdate
呼び出しのフォーマット部分に「%z」を使用すると、ISO 8601準拠のタイムゾーンオフセットを取得できます。
$ date +"%FT%H%M%z"
2016-04-25T1030-0400
date
呼び出しでUTC時刻を取得するには、-u
フラグを指定し、日時文字列の末尾に「Z」を追加して、時刻が次のようにUTCであることを示します。
$ date -u +"%FT%H%MZ"
2016-04-25T1430Z