Findstr: corresponde nomes de arquivos contendo exatamente um único ponto

0

Eu estou desesperadamente tentando encontrar todos os arquivos dentro de uma pasta e seus subdiretórios contendo exatamente um único ponto. Lendo a documentação do findstr, eu descobri esse tipo de regex, mas ele ainda corresponde a todos os nomes de arquivo que contêm pontos. No meu entendimento, o regex que eu construí deveria ler: "Quaisquer caracteres, exceto os pontos, requerem um único ponto e, em seguida, todos os caracteres exceto os pontos".

where /r directory *.* | findstr /irc:"[^\.]*\.[^\.]*"

Eu sei que posso instalar o grep, mas quero uma solução que funcione de maneira simples.

    
por Kapt.Brackbier 27.10.2015 / 23:02

1 resposta

0

Ok, eu mesmo encontrei a solução.

Como [class]* corresponde a zero ou mais ocorrências, essa expressão correspondeu sempre que havia pelo menos um (em oposição a exatamente um) ponto dentro de um nome de arquivo.

Para fazer corresponder exatamente um, a posição do ponto precisa ser especificada. No meu caso, eu simplesmente adicionei os especificadores de posição "^" (início de uma linha) e "$" (fim de linha), de modo que agora o regex se traduz em "Linhas com exatamente um único ponto em qualquer lugar entre o início e o fim do linha "

where /r directory *.* | findstr /irc:"^[^\.]*\.[^\.]*$"
    
por 28.10.2015 / 12:20