Подтвердить что ты не робот

Как получить время с момента последнего изменения файла в секундах с помощью bash?

Мне нужно получить время в секундах с момента последнего изменения файла. ls -l не отображает его.

4b9b3361

Ответ 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`