ファイル名に日付と時刻を追加するには?

ファイル名に日付と時刻を追加するには?

コマンドを実行しようとしていますが、出力ファイル名に日付と時刻を入力したいと思います。

以下は、実行したいサンプルコマンドです。

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/mtabmd5ハッシュをそのコンテンツとして使用してファイルが生成されます(たとえ現在の日時であるにもかかわらず)。

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であることを示す場合は、呼び出しからdateUTC時刻を取得できます。-u

 $ date -u +"%FT%H%MZ"
 2016-04-25T1430Z

おすすめ記事