A resposta para a sua pergunta literal é 'não' - mas se a sua verdadeira questão for:
Can I somehow select only files containing a digit in their name under cmd?
se for qualquer coisa baseada nt (mais especificamente W2k mais ) sim, isso pode ser feito.
O truque é usar findstr
, que suporta regexes simples, para filtrar os resultados.
dir /b |findstr /r "\.[0-9]"
fornecerá resultados semelhantes aos que dir
do seu exemplo faria. Isso significa que ele também retornará file.1st.second
(como dir).
Um pequeno problema aqui é que ele listará apenas nomes de arquivos, mas mesmo isso pode ser resolvido:
for /f %F in ('dir /b ^|findstr /r "\.[0-9]"') do @echo %~ftzaF
imprimirá sua listagem bem formatada dir
style. Note que tem que ser executado no diretório atual!
OR ( o que eu recomendaria )
se você tiver powershell
disponível (ou estiver pronto para instalá-lo), ative-o e execute: gi .\* |? {$_.name -match "\.[0-9]"}
Editado de acordo com o comentário do OP:
Isso irá enumerar arquivos usando for /r
:
Mais simples, mas muito lento (praticamente inutilizável para qualquer coisa, exceto alguns arquivos), já que ele executa findstr
para cada linha:
for /r "c:\temp" %F in (*) do @echo %~nxF | findstr /r "\.[0-9]" && echo %F
Mais complexo, mas rápido (usa strings especialmente preparadas para permitir a união de uma única instância de findstr
:
for /f "tokens=2 delims=* eol=*" %F in ('^(for /r "directory_root" %F in ^(*^) do @echo %~nxF*%~dpnxF^) ^|findstr /r "\.[0-9].*\*"') do @echo %F
ou (funcionalmente o mesmo, mas mais fácil de ler: >)
(for /r "directory_root" %F in (*) do @echo %~nxF*%~dpnxF) | for /f "tokens=2 delims=* eol=*" %F in ('findstr /r "\.[0-9].*\*"') do @echo %F
Todos os exemplos são executados diretamente na linha de comando