No bash: Como encontrar e excluir diretórios contendo um arquivo específico, somente se o arquivo tiver mais de X minutos

No bash: Como encontrar e excluir diretórios contendo um arquivo específico, somente se o arquivo tiver mais de X minutos

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.

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

informação relacionada