コマンドを実行しようとしていますが、出力ファイル名に日付と時刻を入力したいと思います。
以下は、実行したいサンプルコマンドです。
md5sum /etc/mtab > 2016_4_25_10_30_AM.log
日付/時刻形式は、下線付きの適切な形式にすることができます。 AMとPMが利用できない場合は、UTCも使用できます。
ベストアンサー1
現在の日付/時刻をファイル名として使用するには、次のものを使用できますdate
。コマンドの置き換え。
$ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"
2016_04_25_10_30_AM.log
これにより、/etc/mtab
md5ハッシュをそのコンテンツとして使用してファイルが生成されます(たとえ現在の日時であるにもかかわらず)。
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
次のようにフラグを設定し、日付/時刻文字列の末尾に「Z」を追加して時刻がUTCであることを示す場合は、呼び出しからdate
UTC時刻を取得できます。-u
$ date -u +"%FT%H%MZ"
2016-04-25T1430Z