---
slug: "シェルスクリプトでファイルが判定日時より古かったらなにかをする"
title: "シェルスクリプトで、ファイルが判定日時より古かったらなにかをする"
description: "date コマンドを使ってファイルの更新日付のタイムスタンプを取得する方法。\n一定時間処理されていないタスクを判定して、mac でターミナルを開いた時にアラートを出すために書きました。"
url: "https://www.ytyng.com/blog/シェルスクリプトでファイルが判定日時より古かったらなにかをする"
publish_date: "2022-05-28T07:29:33Z"
created: "2022-05-28T07:29:33Z"
updated: "2026-02-27T00:07:09.358Z"
categories: ["シェルスクリプト(Bash/Zsh)"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/ab9d425c0d654442b8d2e9ed5142a454.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# シェルスクリプトで、ファイルが判定日時より古かったらなにかをする

<p>一定時間処理されていないタスクを判定して、mac でターミナルを開いた時にアラートを出すために書きました。</p>
<p></p>
<pre>date -r &lt;target-file-path&gt; +"%s"</pre>
<p>&uarr;ファイルのUnixタイムスタンプ(エポック秒) が取得できるので、これで計算する。</p>
<p></p>
<pre>#!/usr/bin/env zsh<br /># 前回の処理からしばらく経過していたらアラート<br /><br />cd "$(dirname $0)" || exit<br /><br />now=$(date "+%s")<br />file_timestamp=$(date -r &lt;target-file-path&gt; +"%s")<br />delta=$(($now - $file_timestamp))<br /><br />threshold=$((86400 * 35))<br /># echo "delta = ${delta}"<br /># echo "threshold = ${threshold}"<br /><br />if [ ${delta} -gt ${threshold} ]; then<br />  echo "前回の処理から35日以上経過しています。"<br />  echo "処理を行ってください"<br />fi</pre>
