En bash: cómo buscar y eliminar directorios que contengan un archivo específico, solo si el archivo tiene más de X minutos

En bash: cómo buscar y eliminar directorios que contengan un archivo específico, solo si el archivo tiene más de X minutos

En bash, ¿cómo puedo encontrar y eliminar los directorios que contienen un archivo específico, solo si el archivo tiene más de X minutos?

Hay esta respuestaque encuentra los directorios que contienen un archivo específico. Sin embargo, no está claro cómo agregar la condición de que el archivo tenga más de X minutos.

Respuesta1

Editar: forma más sencilla:

find . -name 'foobar.dat' -mmin +3 -exec bash -c 'rm -vr "$(dirname "$1")"' bash {} \;

Básicamente, es encontrar los archivos coincidentes y luego borrar su directorio principal. La segunda cadena "bash" puede ser cualquier cosa, solo está ahí para evitar poner el nombre del archivo en "$0" (aunque esto parece funcionar bien...)

Solución anterior menos elegante:

Yo abordaría el problema de otra manera:

  • cree un pequeño script que haga rm -r $(dirname $1)(es decir, elimine el directorio principal del argumento)

  • encuentre todos esos archivos y llame al script en ellos:

    find . -name 'foobar.dat' -mmin +3 -exec rmparent_script {} \;
    

información relacionada