Назад | Перейти на главную страницу

Используйте 'find', чтобы определить файлы, измененные вчера

Я уверен, что это старый вопрос с простым ответом, но я пробовал все известные мне комбинации, и ничего не придумал. И поиск в Google менее чем приятен, поскольку поиск в этой теме предлагает сотни способов «найти вчерашнюю дату с помощью команды date».

В любом случае, я пытаюсь использовать find для выбора списка файлов, которые были изменены вчера. Цель состоит в том, чтобы выбрать вчерашние файлы журнала из каталога, чтобы сделать с ними что-то конкретное. Каталог содержит журнал вывода за несколько дней.

Лучшее, что я могу получить, - это вернуть вчерашние файлы с перечисленными сегодня файлами. Я не хочу видеть сегодняшние файлы - только вчера.

Я также добавлю Попался: это находка AIX, НЕ GNU можно найти в большинстве дистрибутивов Linux. Так -daystart мне недоступен. (Уже думал об этом!)

Кто-нибудь знает эффективный способ вывести список вчерашних файлов с помощью функции find в AIX?

Одна возможность: построить GNU find на вашем компьютере и использовать его вместо стандартного find.

Или, если в AIX find есть тест -newer, вы можете сделать что-то вроде этого:

# midnight oct 7
touch -t 10070000 today.ref
# midnight oct 6
touch -t 10060000 yesterday.ref

find /dir -newer yesterday.ref -a \! -newer today.ref -print
rm today.ref yesterday.ref

Вы можете вычесть количество минут текущего времени с полуночи и использовать -mmin:

min=$(date +%M); currtime=$(($(date +%k)*60 + ${min#0*} )); find /some/dir -mmin -$((currtime + (24 * 60))) -a -mmin +$((${currtime} + 1))

Возможно, вам потребуется внести некоторые изменения в смещения. У меня не так много файлов в нужное время, чтобы проводить много пограничного тестирования.

В зависимости от того, что вам нужно с ними делать, как насчет простого решения ls + grep?

ls -al LOGDIRECTORY | grep 'YOUR DATE'

Не будет find . -mtime 1 Покажи фокус?

Если вам нужно, чтобы это было вчера, и вы не можете запустить его ближе к полуночи, я полагаю, вы могли бы кое-что поработать, используя две опции -mmin, чтобы указать интервал времени.

Итак, если сейчас 01:00, вы можете сделать find . -mmin +60 -mmin -1500