Não há necessidade de nenhum programa adicional ou mesmo de um script, find pode fazer isso com uma única chamada.
Eu suponho que você tenha uma árvore de diretórios como esta:
.
├── delete
├── GoT
│ ├── artwork.png
│ ├── S10E05_Everybody_dies.mkv
│ └── stream.ts
├── TBBT
│ └── Season_01
│ ├── file.avi
│ └── notes
└── The_Wire
├── current.mp4
└── wallpaper.jpg
O conteúdo do arquivo delete se parece com isto:
/full/path/to/GoT
/full/path/to/TBBT
Este comando find procurará em todos os diretórios por arquivos com as extensões especificadas e uma idade de mais de 89 dias:
find $(</path/to/delete) -type f \( -name "*.mkv" -o -name "*.mp4" -o -name "*.mpg" -o -name "*.mpeg" -o -name "*.avi" -o -name "*.xvid" -o -name "*.ts" \) -mtime +89
A saída do meu exemplo é:
/full/path/to/GoT/stream.ts
/full/path/to/GoT/S10E05_Everybody_dies.mkv
/full/path/to/TBBT/Season_01/file.avi
Use isso para testar o comando. Se fizer o que você deseja, basta adicionar -delete ao final do comando para executar a exclusão:
find $(</path/to/delete) -type f \( -name "*.mkv" -o -name "*.mp4" -o -name "*.mpg" -o -name "*.mpeg" -o -name "*.avi" -o -name "*.xvid" -o -name "*.ts" \) -mtime +89 -delete
Você pode executar este último comando periodicamente, por exemplo, usando um cronjob (mas defina SHELL=/bin/bash no crontab primeiro, cron usa dash por padrão!) - a palavra-chave @daily poderia ser útil:
@daily find $(</path/to/delete) …
Uma observação sobre espaços em caminhos: eu realmente recomendo livrar-se de espaços em nomes de diretórios e arquivos em geral, mas se você realmente precisa ter espaços nos caminhos, você pode querer definir IFS=$'\n' primeiro para permitir somente caractere de nova linha como um delimitador de argumentos.