dir /a:d-l /b .*
.pepita
dir /a:d-l /b *.*
.nuget
AB
AppData
Contatos
Desktop
Documentos
Downloads
Favoritos
IntelGraphicsProfiles
Links
Música
Imagens
Jogos salvos
Pesquisas
fonte
Vídeos
Eu tentei dir /a:d /b *^.*
, mas ele lista todos os diretórios assim como o comando anterior. Como listar apenas os diretórios que têm pelo menos um ponto entre os caracteres de seus nomes?
Use
*.<
ou<.<
como curinga.O verdadeiro motivo pelo qual
<
>
"
eles não são permitidos em nomes de arquivos do Windows é porque eles também são caracteres curinga no código de correspondência de padrões derivado do DOS. (Consulte [MS-FSA] 2.1.4.3 e [MS-FSA] 2.1.4.4 , ou pesquise no GitHub pelos termos DOS_STAR, DOS_DOT, DOS_QM.)Neste caso,
<
aka DOS_STAR corresponde a 0 ou mais caracteres até o final.
do nome (o uso pretendido parece ser para correspondência de extensão de arquivo, por exemplo,<txt
em vez de*.txt
), mas devido à maneira como é implementado, usá-lo depois de um ponto forçará esse ponto a ser correspondido explicitamente também.(Isso provavelmente é uma relíquia dos dias dos nomes 8.3 do MS-DOS, onde o ponto separando os campos 'nome' e 'extensão' estava implicitamente presente, então *.* correspondia a todos os nomes – e os programas esperavam que isso continuasse funcionando mesmo depois que o Windows 95 tornou o ponto nos nomes explícito.)
Como alternativa: mude para o PowerShell, que usa sua própria correspondência de curinga com semântica mais parecida com a do Unix e
*.*
faz o que você espera.Você pode usar dir com a ajuda de find...
Testei no Windows 11: test.gif