ls *{369..422}*.avi >/dev/null
Isso primeiro gerará padrões como
*369*.avi
*370*.avi
*371*.avi
*372*.avi
*373*.avi
*374*.avi
através da expansão da chave e, em seguida, ls
será executado com esses padrões, o que fornecerá uma mensagem de erro para cada padrão que não puder ser expandido para um nome no diretório atual.
Como alternativa, se você não tiver arquivos que contenham *
em seus nomes:
for name in *{369..422}*.avi; do
case "$name" in
'*'*) printf '"%s" not matched\n' "$name" ;;
esac
done
Isso depende do fato de que o padrão permanece não expandido se não corresponder a um nome no diretório atual. Isso permite que você faça algo útil para os arquivos ausentes, sem recorrer à análise das mensagens de erro de ls
.