Использование find -mmin для поиска файлов со временем модификации в будущем

9

я могу использовать

find . -mmin -5

найти файлы, измененные за последние 5 минут. Однако, если я попытаюсь найти файлы с временем модификации в будущем, указав отрицательное число, я findотказываюсь это сделать:

find . -mmin --1

Есть ли способ дать время будущей модификации стандартному Linux find?

Muxecoid
источник

Ответы:

9

Чтобы найти файлы, измененные как минимум через 5 дней, используйте:

find . -newermt "5 days"

Синтаксис для спецификации времени соответствует синтаксису для date -d. Для man findполучения дополнительной информации см. Информацию о названном коммутаторе -newerXY.

Невозможно использовать, например, -mminчтобы сделать это. Это было объявлено как ошибка в GNU find , и было решено путем внедрения -newerXYв findutils 4.3.3 (~ 2007), как я показал выше.


По-видимому, использовалась не GNU find, а BusyBox.

После этого вы сможете создать временный файл с touch -dдатой в будущем, а затем использовать -newerпереключатель для find:

touch -d "+5 days" tmpfile
find . -newer tmpfile

BusyBox touchне поддерживает этот формат даты, но принцип тот же и его findподдерживает -newer. Создание справочного файла с правильной датой оставлено в качестве упражнения для читателя (всегда удобно писать).

Даниэль Андерссон
источник
Спасибо. Моя проблема в том, что моя находка - это старая встроенная находка BusyBox, а не binutil find. Видимо стандартный способ linux здесь не работает. :(
Muxecoid
@Muxecoid: я обновил свой ответ некоторыми замечаниями BusyBox.
Даниэль Андерссон
Это только избавило меня от проблем на новой машине, где я случайно сделал что-то десять часов в будущем (смещение часового пояса, примененное к уже смещенным аппаратным часам), и после установки часов configureскрипт жаловался на то, что происходит в будущем ( часа полтора или около того еще) find . -newermt '1 hour' | xargs touch -d '-9 hours'и я могу продолжить. :-)
Крис Морган