Поиск файлов старше x дней в системе с урезанным занятым ящиком

Мне нужно найти и удалить файлы старше 1 недели в блоке разработки. На этом устройстве доступно ограниченное количество утилит. Предикат -mtime find недоступен. Как в этом случае проверить все файлы старше x дней?

-mtime является стандартным предикатом find (в отличие от -delete ), но похоже, что у вас есть урезанная версия busybox , где функция FEATURE_FIND_MTIME была отключена во время сборки.

Если вы можете перестроить busybox с его включением, вы должны сделать:

 find . -mtime +6 -type f -exec rm -f {} + 

Или, если FEATURE_FIND_DELETE также включен:

 find . -mtime +6 -type f -delete 

Если нет, другие варианты могут заключаться в использовании команды find -newer (при условии, что FEATURE_FIND_NEWER включен) для файла, для которого задано время модификации, find -newer одной неделе.

 touch -d "@$(($(date +%s) - 7 * 86400))" ../ref && find . ! -type f -newer ../ref -exec rm -f {} + 

Или, если -newer недоступен, но sh ‘поддерживает -nt :

 touch -d "@$(($(date +%s) - 7 * 86400))" ../ref && find . ! -type f -exec sh -c ' for f do [ "$f" -nt ../ref ] || printf "%s\0" "$f" done' sh {} + | xargs -0 rm -f 

От man find :

– формат n

Последний раз к файлу обращались n * 24 часа назад. Когда команда find определяет, сколько 24-часовых периодов назад к файлу последний раз обращались, любая дробная часть игнорируется, поэтому для соответствия -atime +1 файл должен был быть получен как минимум два дня назад.

-время n

Статус файла был последний раз изменен n * 24 часа назад. См. Комментарии для -atime, чтобы понять, как округление влияет на интерпретацию времени изменения состояния файла.

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