Я уверен, что это старый вопрос с простым ответом, но я пробовал все известные мне комбинации, и ничего не придумал. И поиск в 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