シェルスクリプトを実行した日付のファイル名でファイルを作成する方法

目次

スポンサードリンク

Linuxのシェルスクリプトでファイルを保存する際、ファイル名の末尾にスクリプトを実行した日付を含めてファイル保存する方法を解説します。スクリプトを cronで定期的に実行する場合など、毎日異なるファイル名でファイルを保存したいときに役立つテクニックです。

サンプルコード

#!/bin/bash

function func_main {

# 1日前の日付を保存
date=`date -d '1 day ago' +%Y%m%d`

# httpd のアクセスログの行数を保存
result=`cat /var/log/httpd/access_log | wc -l`

# ファイル出力
echo "$result" >> /tmp/wc_$date.log

}

func_main

exit 0

このサンプルでは、変数 date に実行した前日の日付を保存しています。 変数 result には、httpdのアクセスログの行数を wcコマンドでカウントした結果を保存しています。 echoコマンドで 変数 result の内容を、 /tmpディレクトリに、wc_【日付】.log のファイル名で保存しています。このシェルスクリプトを実行すると、wc_20240409.log のように日付付きのファイルに 変数 resultの内容を保存します。

dateコマンドで使えるおもな書式

dateコマンドには日付を制御するオプションがあり主な書式は以下の通りです。

書式 内容
%Y 年の西暦表示
%m 月を2桁で表示(01~12)
%d 日を2桁で表示(01~31)
%H 時間を2桁で表示(00~23)
%M 分を2桁で表示(00~59)
%S 秒を2桁で表示(00~59)


また、-d オプションを付与することで、実行日時以外を指定することができます。 -dオプションでは、指定した日付と時刻にの日時を設定することや、日付や時刻の加算、減算を行うことができます。

指定した日付と時刻にの日時を設定

date -d "2024-04-10 10:00:00"

日付と時刻の加算・減算を行う

date -d "today +1 day"  # 1 日後を表示
date -d "today -1 hour"  # 1 時間前を表示

その他、today (今日の日付)、yesterday (昨日)、tomorrow (明日) も指定できます。オプションで使用できる書式はOSによって若干の違いがあるので、対象のOSで利用できるかは確認が必要です。

まとめ

日付を含めたファイル名でファイルを保存する方法を解説しました。システムの監視スクリプトなど定期的に実行するシェルスクリプトなどで活用できるテクニックです。

シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。

最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。