Проверить дату файла в bash
Я пытаюсь проверить, сколько лет назад был создан файл (в секундах) с Баша в if
заявление. Мне нужна дата создания, а не модификации.
вы знаете, как это сделать, не используя команду, такую как find
С grep
?
4 ответов
боюсь, я не могу ответить на вопрос о времени создания, но для последнего времени модификации вы можете использовать следующее, чтобы получить дата эпохи, в секунд С имя файла был последние изменения:
date --utc --reference=filename +%s
Так вы могли бы тогда так что-то вроде:
modsecs=$(date --utc --reference=filename +%s)
nowsecs=$(date +%s)
delta=$(($nowsecs-$modsecs))
echo "File $filename was modified $delta secs ago"
if [ $delta -lt 120 ]; then
# do something
fi
etc..
обновление Более elgant способ сделать это (опять же, только измененное время):как проверить в bash был ли файл создан более x раз назад?
вот лучший ответ, который я нашел в то время, но это только для времени модификации:
expr `date +%s` - `stat -c %Y /home/user/my_file`
Если ваша система имеет stat
:
modsecs=$(stat --format '%Y' filename)
и вы можете сделать математику как в Джоул'ы ответ.
вы можете использовать ls с --full-time
file1="file1"
file2="file2"
declare -a array
i=0
ls -go --full-time "$file1" "$file2" | { while read -r a b c d time f
do
time=${time%.*}
IFS=":"
set -- $time
hr=;min=;sec=
hr=$(( hr * 3600 ))
min=$(( min * 60 ))
totalsecs=$(( hr+min+sec ))
array[$i]=$totalsecs
i=$((i+1))
unset IFS
done
echo $(( ${array[0]}-${array[1]} ))
}