Isso listará todos os diretórios com arquivos com tempo de acesso maior que 180 dias e tamanho maior que 50 MB.
for name in $(cat usernames.txt); do
find /home/"$name" -type f -atime +180 -size +50M|sed 's/\/[^/]\+$//'|sort -u
done
Para remover, adicionei xargs após sort .
No meu próprio / home, eu tenho alguns dirs com espaços e aspas simples no nome (em minha defesa, alguns dirs mp3 :)). xargs imprimiu um aviso e me disse para adicionar a opção -0 , e para corrigir o caractere nulo, adicionei a opção delimitador -d'\n' .
for name in $(cat usernames.txt); do
find /home/"$name" -type f -atime +180 -size +50M|sed 's/\/[^/]\+$//'|sort -u|xargs -0 -d'\n' -n1 -I{} echo -rf "{}"
done
Se as coisas parecem boas para você, então você pode substituir echo por rm no comando xargs .
Talvez rm imprima mensagens de erro porque algum diretório pai será removido antes de algum subdiretório.