Comment obtenir get-childitem pour filtrer sur plusieurs types de fichiers?

22

J'essaie d'obtenir une liste de tous les fichiers XSL et XSLT dans un répertoire.

dir -recurse -filter *.xsl,*.xslt -name

Mais l'erreur suivante:

Get-ChildItem: impossible de convertir 'System.Object []' en le type 'System.String' requis par le paramètre 'Filter'. La méthode spécifiée n'est pas prise en charge.

dir -recurse -filter *.xsl -filter *.xslt -name

Mais j'ai cette erreur:

Get-ChildItem: impossible de lier le paramètre car le paramètre 'Filter' est spécifié plusieurs fois. Pour fournir plusieurs valeurs à des paramètres pouvant accepter plusieurs valeurs, utilisez la syntaxe du tableau. Par exemple, "-parameter value1, value2, value3".

Puis-je répertorier les deux extensions de fichier avec une seule commande?

Amy
la source

Réponses:

33
dir .\* -include ('*.xsl', '*.xslt') -recurse
EBGreen
la source
Notez que le () est en fait redondant, mais je préfère être explicite.
EBGreen
Cela n'a aucun sens pourquoi cette commande ne fonctionne pas sans le commutateur -recurse, pour répertorier les fichiers .xsl et .xslt dans le répertoire en cours.
Gordon Bell
6

Je ne sais pas pourquoi, mais celui-ci semble être beaucoup plus rapide:

dir .\ -recurse | where {$_.extension -in ".xsl",".xslt"}
crysman
la source