dateコマンドをyyyymmddhhmmss形式でフォーマットする方法

dateコマンドをyyyymmddhhmmss形式でフォーマットする方法

当ページのリンクには広告が含まれています。

記事の文字数:1572

LinuxやUnix環境で日付や時刻を自在に扱うために欠かせないdateコマンド。本記事では、特にフォーマット指定に焦点を当て、基本構文から応用テクニックまで分かりやすく解説します。


スポンサーリンク

LinuxやUnix系OSで日付や時刻を表示・操作する際に頻繁に使用されるdateコマンド。本記事では、特に実用性の高い「フォーマット指定」に焦点を当て、エンジニア視点で詳しく解説します。初心者にも分かりやすく、かつ実務に役立つ内容となっています。


dateコマンドの基本

端末(ターミナル)でdateと入力すると、現在のシステム時刻が標準的な形式で表示されます。

Terminal window
$ date
2025年 4月 6日 日曜日 10:30:00 JST

この形式は目視確認には便利ですが、スクリプト処理やログファイルへの出力など、機械的な処理を行うには扱いにくいことがあります。そうした場面では、フォーマットをカスタマイズすることで、より適切で一貫性のある形式に整えることが重要です。


フォーマット指定(yyyymmddhhmmss)

dateコマンドでは、+記号を使うことで出力形式をカスタマイズできます。書式文字列内にはプレースホルダとして「フォーマット指定子」を用います。

Terminal window
$ date "+%Y-%m-%d %H:%M:%S"
2025-04-06 10:30:00

このようにすることで、日付や時刻を「YYYY-MM-DD HH:MM:SS」という標準的な形式で出力できます。これはログ管理や時系列データの処理において非常に有用です。

以下は、特によく使われる主なフォーマット指定子の一覧です。

指定子意味出力例
%Y西暦(4桁)2025
%y西暦(下2桁)25
%m月(2桁)04
%d日(2桁)06
%H時(24時間表記)10
%I時(12時間表記)10
%M30
%S00
%p午前・午後(AM/PM)AM
%A曜日(英語・フル)Sunday
%a曜日(英語・略称)Sun
%ZタイムゾーンJST

これらを組み合わせることで、柔軟な出力フォーマットを実現できます。


dateコマンドでよく使うフォーマット例

ログファイル名に日付指定

ログファイルには、日付をファイル名に埋め込むことで、日次ログの管理が容易になります。

Terminal window
$ date "+log_%Y%m%d.txt"
log_20250406.txt

バックアップディレクトリ名に日付指定

バックアップのタイミングに応じたディレクトリ名を動的に生成できます。

Terminal window
$ date "+backup_%Y-%m-%d_%H%M"
backup_2025-04-06_1030

日付をUTCで出力

国際的なデータ交換やクラウド環境でのログ共有では、ISO 8601形式が求められることがあります。

Terminal window
$ date -u "+%Y-%m-%dT%H:%M:%SZ"
2025-04-06T01:30:00Z

-uオプションはUTC(協定世界時)での出力を意味します。システム時刻と異なる場合があるため注意が必要です。

日本語を含む形式で日付表示

Terminal window
$ date "+%Y年%m月%d日(%a) %H時%M分"
2025年04月06日(日) 10時30分

特定の日付をフォーマットする

-dオプションを使用すると、現在時刻ではなく、任意の日時を指定してフォーマット出力することができます。これは、過去のログや未来の日程を扱う際に非常に便利です。

相対的な日付の表示

Terminal window
$ date -d "yesterday" "+%Y-%m-%d"
2025-04-05
$ date -d "next Monday" "+%Y-%m-%d"
2025-04-07

このように、自然言語的な日付指定も可能です。

日付を固定してフォーマットする

Terminal window
$ date -d "2023-12-25" "+%A"
Monday

この機能は、カレンダー処理やイベント計画の自動化にも役立ちます。


dateコマンドを他コマンドと連携する

dateコマンドは、他のUNIX系コマンドと組み合わせることで威力を発揮します。例えば、シェルスクリプト内で動的にログファイル名を生成したり、cronでのジョブ実行時にタイムスタンプを付けたりできます。

#!/bin/bash
filename="report_$(date +%Y%m%d_%H%M%S).txt"
echo "ログファイル: $filename"

また、findtouchなどと組み合わせることで、タイムスタンプを利用したファイル操作の自動化も可能です。


dateコマンドのフォーマット指定を使いこなせば、ログファイルの命名、バックアップの管理、ジョブスケジューリング、さらにはクラウド上でのデータ同期など、多岐にわたる用途に対応できます。

まずは基本的なフォーマットをマスターし、自分の業務に合わせて応用してみましょう。小さな工夫が、大きな効率化につながります。

Linuxユーザにお勧めの本

ゼロからわかる Linuxコマンド200本ノック?基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

新品価格
¥2,587から
(2025/4/22 20:54時点)

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

新品価格
¥2,475から
(2025/4/22 21:13時点)


以上で本記事の解説を終わります。
よいITライフを!
Scroll to Top