【Linux】dateコマンドの使い方|フォーマット指定と実用例まとめ

Linux

システム開発における試験ログの作成など、ファイル名に現在の日時を付与したくなることがあります。
Linux環境であれば、date コマンドを使うことで簡単に対応できます。

ただ、使用頻度が思いのほか高くないため、
いざ使おうと思ったときにオプションやフォーマットの指定方法が、
すぐに思い出せないといったことがあると思います。

この記事では、Linux における date コマンドで

  • 現在の日時を確認する方法
  • 任意の形式(フォーマット)でカスタマイズして出力する方法
  • 日付情報をファイル名やログに利用する方法

を具体例とともにまとめています。

すぐに試せるコマンドを中心にまとめているため、
日付付きログやスクリプト処理など、実務や試験での作業効率化に役立ちます。

dateコマンドとは

Linuxで日時に関する情報を表示・操作するためのコマンドです。
ファイル名への日時付与など、日時の情報を扱う場面でよく利用されます。

dateコマンドの基本構文

date [OPTION]... [+FORMAT]

+FORMAT を指定することで日時の表示形式を変更できます。
後述で詳しくまとめていますが、+%Y%m%d を指定すると「20260109」のような形式で出力されます。

dateコマンドの基本的な使い方

現在の日時を出力する

$ date
Sat Jan 09 00:24:37 JST 2026

上記は、オプションなしで dateコマンドを実行した場合の例です。
出力形式はロケールやタイムゾーンなど環境によって異なる場合がありますが、
このように「曜日、月、日、時刻、タイムゾーン、年」が表示されます。

任意の形式(フォーマット)で日時を出力する

dateコマンドを実行する際、形式(フォーマット)を指定することで、
日時の出力形式を自由にカスタマイズすることができます。

よく使われるフォーマットは以下があります。

フォーマット説明
%Y西暦(4桁)
%y西暦(下2桁)
%m月(01~12)
%d日(01~31)
%H時(00~23)
%M分(00~59)
%S秒(00~59)

これらのフォーマットを組み合わせて出力する例が以下です。

$ date +%Y%m%d
20260109

%Yは年(西暦)%mは月%dは日を表しています。

次のように%H、%M、%Sを指定することで、時・分・秒も出力できます。

$ date "+%Y-%m-%d %H:%M:%S"
2026-01-09 00:30:10

フォーマットに半角スペースを含みたい場合は、
シングルクォート(’)やダブルクォート(”)で囲んで指定します。

現在からn日後、n日前の日付を出力する

–date ‘n day’ と書くことでn日後、さらに後ろに ago と付けることでn日前など、
未来や過去の日付を出力できます。

現在から1日後の日付を出力する

$ date +%Y%m%d --date '1 day'
20260110

【補足】
少しややこしいと思いますが、負の数を指定することもできます。
たとえば、-1を指定した場合だと、-1日後(=1日前)の日付が出力されます。

現在から1日前の日付を出力する

$ date +%Y%m%d --date '1 day ago'
20260108

現在から1ヶ月後の日付を出力する

$ date +%Y%m%d --date '1 month'
20260209

【補足】
たとえば、5/31を起点として1ヶ月後の日付を出力する場合、
6/31は存在しないため、7/1が出力されます。

現在から1年後の日付を出力する

$ date +%Y%m%d --date '1 year'
20270109

【補足】
たとえば、2024/02/29を起点として1年後の日付を出力する場合、
2025年はうるう年ではない(2025/02/29はない)ため、2025/03/01が出力されます。

1970年01月01日 0:00:00(UTC)からの経過秒数を出力する

次のようにコマンドを実行することで、1970年01月01日 0:00:00(UTC)からの経過秒数を出力できます。

$ date +%s
1767974479

【補足】
秒単位タイムスタンプはスクリプト処理や計算で扱いやすい形式です。
人間が見る場合は、前述の年月日・時分秒フォーマットの方が可読性が高いです。

また、次のようにコマンドを実行することで、
取得した経過秒数を年月日_時分秒に変換することもできます。

$ date +%Y%m%d_%H%M%S --date="@1767974479"
20260110_010119

なお、使う機会がどれくらいあるのかは不明……。

現在時刻をミリ秒/マイクロ秒/ナノ秒単位で表示する

次のようにコマンドを指定することで、
ミリ秒・マイクロ秒・ナノ秒単位での出力もできます。
これらは、高精度な時刻情報が必要な場合に便利なフォーマットです。

現在時刻をミリ秒単位で出力する

$ date +%Y%m%d_%H:%M:%S.%3N
20260110_01:08:28.860

現在時刻をマイクロ秒単位で出力する

$ date +%Y%m%d_%H:%M:%S.%6N
20260110_01:08:45.260406

現在時刻をナノ秒単位で出力する

$ date +%Y%m%d_%H:%M:%S.%N
20260110_01:08:55.505259662

dateコマンドの実用例

dateコマンドの出力をファイル名に利用する

$ touch test_$(date +%Y%m%d).log
$ ls
test_20260109.log

上記は、date +%Y%m%d の出力結果をファイル名の一部として利用する例です。
これにより、実行した日付がわかるファイルを簡単に作成することができます。
たとえば、ログファイル管理やスクリプト実行履歴の整理などに便利です。

また、viなどのエディタを起動する際にも、dateコマンドの出力をファイル名として利用できます。

$ vi test_$(date +%Y%m%d).log

まとめ

この記事では、Linuxにおける dateコマンドの基本的な使い方についてまとめました。

dateコマンドを使用することで、次のようなことが簡単に行えます。

  • 現在の日時を確認する
  • 任意の形式(フォーマット)で日時を出力する
  • ファイル名などに日付を付与する

date コマンドは使用頻度こそ高くはないものの、
試験ログの整理など、開発業務のさまざまな場面で役立ちます。

また、個別のコマンド操作だけでなく、
Linuxコマンド全体の基本を確認したい方 はこちらの記事もおすすめです。
関連情報:【初心者向け】Linuxでよく使う基本コマンドまとめ|最初に覚えておきたい操作一覧

コメント