Мне нужно получить время в секундах с момента последнего изменения файла. ls -l
не отображает его.
Как получить время с момента последнего изменения файла в секундах с помощью bash?
Ответ 1
В Linux date -r file
печатает дату последнего изменения файла:
date +%s -r file.txt
Чтобы распечатать секунды, прошедшие с момента последней модификации, вы можете использовать expr
с текущей датой в секундах минус дата последней модификации:
echo $(($(date +%s) - $(date +%s -r file.txt)))
В Mac OS X (стиль BSD date
) это не сработает, вам нужно будет использовать stat
, как указывали другие ответы.
Ответ 2
Я знаю, что тегом является Linux, но синтаксис stat -c
не работает для меня на OSX. Это работает...
echo $(( $(date +%s) - $(stat -f%c myfile.txt) ))
И как функция для вызова с именем файла:
lastmod(){
echo "Last modified" $(( $(date +%s) - $(stat -f%c "$1") )) "seconds ago"
}
Ответ 3
В BASH используйте это в течение секунд после последнего изменения:
expr `date +%s` - `stat -c %Y /home/user/my_file`