Não há necessidade do loop interno e há um while
ausente:
while read -r name; do
files=$( echo "$DIR/$name"* )
if [[ "$files" != "$DIR/$name"* ]]; then
echo "$name" >>"$MATCH"
else
echo "$name" >>"$NO_MATCH"
fi
done <"$FILE"
echo "$DIR/$name"*
expandirá para todos os nomes de arquivos correspondentes ao padrão fornecido. Se não houver nomes de arquivos correspondentes a esse padrão, o padrão permanecerá não expandido.