Eu usaria find
em cada diretório por vez, e canalizaria para grep -q .
para verificar se há qualquer resultados, e imprimai o nome do diretório condicionalmente se havia ou não algum resultados:
for d in */; do find "$d" -type f -mtime -30 | grep -q . && printf %s\n "$d"; done