Узнайте, был ли файл изменен за последние 2 минуты

В bash script Я хочу проверить, был ли файл изменен за последние 2 минуты.

Я уже выяснил, что я могу получить доступ к дате последней модификации с помощью stat file.ext -c %y. Как проверить, является ли эта дата старше двух минут?

Ответ 1

Я думаю, что это было бы полезно,

find . -mmin -2 -type f -print

и

find / -fstype local -mmin -2

Ответ 2

Завершите script, чтобы выполнить то, что вам нужно:

#!/bin/sh

# Input file
FILE=/tmp/test.txt
# How many seconds before file is deemed "older"
OLDTIME=120
# Get current and file times
CURTIME=$(date +%s)
FILETIME=$(stat $FILE -c %Y)
TIMEDIFF=$(expr $CURTIME - $FILETIME)

# Check if file older
if [ $TIMEDIFF -gt $OLDTIME ]; then
   echo "File is older, do stuff here"
fi

Ответ 3

Я решил проблему таким образом: получить текущую дату и последнюю измененную дату файла (как в формате временной метки unix). Вычтите измененную дату с текущей даты и разделите результат на 60 (чтобы преобразовать ее в минуты).

expr $(expr $(date +%s) - $(stat mail1.txt -c %Y)) / 60

Возможно, это не самое чистое решение, но оно отлично работает.

Ответ 4

Вот как я бы это сделал: (Я бы использовал правильный временный файл)

touch -d"-2min" .tmp
[ "$file" -nt .tmp ] && echo "file is less than 2 minutes old"

Ответ 5

здесь еще более простая версия, которая использует shell math over expr:

СЕКУНДЫ (для идеи)

echo $(($(date +%s) - $(stat file.txt  -c %Y)))

МИНУТЫ (для ответа)

echo $(($(($(date +%s) - $(stat file.txt  -c %Y))) / 60))