Eu divido isso em duas regexes, parece que está funcionando:
cat filename | grep -E '^[0-9]{5}$|^[0-9]{0,3}[hH]{1}[oO]{0,1}[0-9]{0,5}$'
A primeira parte da regex tentará os nomes dos arquivos com apenas 5 dígitos, e a segunda parte está tentando nomes de arquivos com 0-3 dígitos, 1 'h' ou 'H' carta, 0 ou 1 'oO' letra, 0 a 5 dígitos.
Este regex funciona com awk
também:
cat filename | awk '/^[0-9]{5}$|^[0-9]{0,3}[hH]{1}[oO]{0,1}[0-9]{0,5}$/ {print}'