Как говорится — у хорошего айтишника и бычий хуй веревка!
Привет. Сегодня про find и временные метки.
У утилиты find есть ключ -newer. Тест (-newer) возвращает истину, если метка X новее метки Y.
Формат теста такой:
-newerXY
Временные метки:
Поддерживаемые форматы (t):
Вот несколько из них, которые можно получить с помощью утилиты date.
date --rfc-3339=ns
date --rfc-2822
date +'@%s.%N'
TZ=UTC0 date +'%Y-%m-%d %H:%M:%S'
date +'%Y-%m-%d %H:%M:%S %z'
LC_ALL=C TZ=UTC0 date
Также date умеет отнимать/прибавлять даты.
date -d'- 1 hours'
Более подробно можешь почитать в гнутой доке. Или заглянуть командой: info coreutils date
Теперь давай поищем файлы в домашнем каталоге, у которых время модификации, менялось с заданной даты. Минус 2 часа от текущего времени.
find ~/ -newermt "$(date --rfc-2822 -d '- 2 hours')"
Ага, получаем ожидаемый список. Ок, теперь создадим файл bashdays.txt, у которого время модификации будет -2 часа от текущего времени.
touch -mt $(date '+%Y%m%d%H%M.%S' -d '-2 hours' ) bashdays.txt
Проверяем:
stat bashdays.txt
Смотрим поле Modify, ага все верно, время -2 часа от текущего времени.
Снова запускаем поиск файлов, у которых время модификации свежее времени модификации файла bashdays.txt
find ~/ -newermm bashdays.txt
Выводим дополнительную информацию со временем модификации найденных файлов:
find ~/ -newermm bashdays.txt -printf '%t\n'
find ~/ -newermc bashdays.txt -printf '%t\n'
Чтобы узнать, при каких условиях изменяются временные метки. Можете поизучать man-страницы к системному вызову stat.
Где это можно применить? Ну например, для зачистки старых бэкапов, если предпочитаешь использовать для этого самописные скрипты. На самом деле дофига где применить можно, всё зависит от фантазии и потребностей.
Завтра выходной строим, в воскресенье вернусь. Хороших предстоящих выходных, береги себя!








Комментарии