Usando a opção failglob ; verifica se há correspondências:
if (shopt -s failglob; true *.html) 2>/dev/null; then
echo "Found files"
fi
Usando nullglob e matrizes; conta os arquivos:
numfiles=$( shopt -s nullglob; files=(*.html); echo ${#files[@]} )
if (( numfiles > 0 )); then
echo "Have $numfiles HTML files"
else
echo "No files"
fi
Outra maneira, sem usar nullglob ou descartando $files
:
files=(*.html)
if [[ -e ${files[0]} ]]; then
numfiles=${#files[@]}
echo "$numfiles files found"
fi
Usando nullglob para o script inteiro - pode estar bem em alguns casos, e ruim em outros:
#!/usr/bin/env bash
shopt -s nullglob
...
files=(*.html)
numfiles=${#files[@]}