Мне нужно найти и удалить файлы старше 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
он включен) для файла, для которого задано время изменения в одну неделю.
touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
find . ! -type f -newer ../ref -exec rm -f {} +
Или , если -newer
нет в наличии , но sh
«S [
поддерживает -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
find . -mtime +6 -type f -exec rm {} \;
работал на меня
От man find
:
- формат n
Последний раз к файлу обращались n * 24 часа назад. Когда команда find определяет, сколько 24-часовых периодов назад к файлу последний раз обращались, любая дробная часть игнорируется, поэтому для соответствия -atime +1 файл должен был быть получен как минимум два дня назад.
-время n
Статус файла был последний раз изменен n * 24 часа назад. См. Комментарии для -atime, чтобы понять, как округление влияет на интерпретацию времени изменения состояния файла.
В зависимости от вариантов использования файлов, которые вы хотите удалить, это ваши единственные другие варианты find
. Почему mtime
нет в наличии? Какую файловую систему вы используете? Вы исследовали какие-либо другие варианты?
mtime
недоступно». Это не утилита, имя которой я узнаю.FEATURE_FIND_MTIME
. Является лиFEATURE_FIND_NEWER
включен? Работает лиfind -newer
? Вашаtest
утилита или[
встроеннаяsh
поддержка-nt
?touch -d
/date +%s
и[ file -nt other-file ]