Findstr: correspond aux noms de fichiers contenant exactement un seul point

0

J'essaie désespérément de trouver tous les fichiers d'un dossier et de ses sous-répertoires contenant exactement un point. En lisant la documentation de findstr, j'ai trouvé ce genre de regex, mais il correspond toujours à tous les noms de fichiers contenant des points. D'après ma compréhension, l'expression rationnelle que j'ai construite devrait se lire comme suit: "Tous les caractères sauf les points, puis requièrent un seul point, puis à nouveau tous les caractères sauf les points."

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

Je sais que je pourrais installer grep, mais je souhaite une solution prête à l'emploi.

Kapt.Brackbier
la source

Réponses:

0

Ok, j'ai trouvé la solution moi-même.

Comme il [class]*correspond à zéro ou plusieurs occurrences, cette expression correspond chaque fois qu'il y a au moins un point (par opposition à un seul) dans un nom de fichier.

Pour le faire correspondre exactement à un, il faut spécifier la position du point. Dans mon cas, j’ai simplement ajouté les spécificateurs de position "^" (début d’une ligne) et "$" (fin d’une ligne), de sorte que la regex se traduise par "Les lignes comportant exactement un point unique entre le début et la fin de la ligne". ligne"

where /r directory *.* | findstr /irc:"^[^\.]*\.[^\.]*$"
Kapt.Brackbier
la source