
No bash, como posso encontrar e excluir os diretórios que contêm um arquivo específico, somente se o arquivo tiver mais de X minutos.
Há esta respostaque encontra os diretórios que contêm um arquivo específico. No entanto, não está claro como adicionar a condição de que o arquivo tenha mais de X minutos.
Responder1
Editar: maneira mais simples:
find . -name 'foobar.dat' -mmin +3 -exec bash -c 'rm -vr "$(dirname "$1")"' bash {} \;
O que basicamente é encontrar os arquivos correspondentes e, em seguida, apagar o diretório pai. A segunda string "bash" pode ser qualquer coisa, ela existe apenas para evitar colocar o nome do arquivo em "$0" (embora isso pareça funcionar bem...)
Solução anterior menos elegante:
Eu resolveria o problema de outra maneira:
crie um pequeno script que faça
rm -r $(dirname $1)
(ou seja, remova o diretório pai do argumento)encontre todos esses arquivos e chame o script neles:
find . -name 'foobar.dat' -mmin +3 -exec rmparent_script {} \;