web-dev-qa-db-ja.com

ファイル名に日付と時刻をどのように入れますか?

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

実行したいサンプルコマンドを次に示します。

md5sum /etc/mtab > 2016_4_25_10_30_AM.log

日付と時刻の形式は、アンダースコアを使用して適切なものにすることができます。 AMとPMが使用できない場合、UTCでも使用できません。

24
visc

現在の日時をファイル名として使用する場合は、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
50
Ryan