
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 {} \;