Encontrar archivos anteriores a x días en un sistema con un busybox despojado

9

Necesito encontrar y eliminar archivos de más de 1 semana en la unidad de Desarrollo. Hay un número limitado de utilidades disponibles en esta unidad. -mtime findEl predicado no está disponible. ¿Cómo verifico todos los archivos que tienen más de x días en este caso?

Ravi
fuente
2
No está claro qué quiere decir con " mtimeno está disponible". No es una utilidad cuyo nombre reconozco.
Kusalananda
/ ruta / a / mi / carpeta $ find -type f -mtime +7 delete find: no reconocido: -mtime
Ravi
comparte la distribución de linux que estás usando.
Siva
3
Parece que es busybox construido sin FEATURE_FIND_MTIME. Está FEATURE_FIND_NEWERhabilitado? Funciona find -newer? ¿Su testutilidad o el soporte [de su shapoyo -nt?
Stéphane Chazelas
1
Puede touch -ddate +%s[ file -nt other-file ]
solucionar

Respuestas:

11

-mtimees un predicado estándar de find(contrario a -delete) pero parece que tiene una versión reducida de busybox, donde la FEATURE_FIND_MTIMEcaracterística se ha deshabilitado en el momento de la compilación.

Si puede reconstruir busybox con él habilitado, debería poder hacer:

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

O si FEATURE_FIND_DELETEtambién está habilitado:

find . -mtime +6 -type f -delete

De lo contrario, otras opciones podrían ser usar find -newer(suponiendo que FEATURE_FIND_NEWEResté habilitado) en un archivo que tiene un tiempo de modificación de una semana.

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

O si -newerno está disponible pero shes [compatible -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
Stéphane Chazelas
fuente
1
Sí, busybox era una versión más ligera aquí. Después de reconstruir, find . -mtime +6 -type f -exec rm {} \;funcionó para mí
Ravi
2

De man find:

-ahora n

Se accedió al archivo por última vez hace n * 24 horas. Cuando descubra cuántos períodos de 24 horas se accedió al archivo por última vez, se ignora cualquier parte fraccionaria, por lo que para que coincida con -atime +1, se debe haber accedido a un archivo al menos hace dos días.

-tiempo n

El estado del archivo se modificó por última vez hace * 24 horas. Vea los comentarios de -atime para comprender cómo el redondeo afecta la interpretación de los tiempos de cambio de estado del archivo.

Dependiendo de los casos de uso de los archivos que desea eliminar, estas son sus únicas otras opciones find. ¿Por qué mtimeno está disponible? ¿Qué sistema de archivos estás usando? ¿Exploraste alguna otra opción?

OneK
fuente
Hacer más preguntas sobre el OP debe hacerse como comentarios aclaratorios , no como respuestas .
Jeff Schaller