avoir les fichiers de retour Powershell get-childitem uniquement

76

J'aimerais utiliser get-childitem de manière récursive, mais lui demander uniquement de renvoyer des fichiers et non des répertoires. La meilleure solution que j'ai n'a pas l'air naturelle:

gci . *.* -rec | where { $_.GetType().Name -eq "FileInfo" }
Frank Schwieterman
la source

Réponses:

76

Essaye ça:

gci . *.* -rec | where { ! $_.PSIsContainer }
Andy
la source
4
si vous excluez les conteneurs, vous pouvez laisser le *. *, droite?
MDMoore313
100

Dans Powershell 3.0, c'est plus simple,

gci -Directory #List only directories
gci -File #List only files

C'est encore plus court,

gci -ad # alias for -Directory
gci -af # alias for -File
iraSenthil
la source
2

Dans PowerShell 3.0, vous pouvez également utiliser le -Attributesparamètre ajouté récemment
(avec des opérateurs logiques).

Get-ChildItem -Recurse -Attributes !Directory+!System

Golfé

dir -r -Attributes !D
Nixda
la source
-4

Dans powershell 2.0, la solution la plus simple et la plus simple que j'ai proposée consiste à inclure tous les fichiers avec une extension:

get-childitem -Recurse -include *.*

les dossiers n'ont pas d'extension, ils sont donc exclus, méfiez-vous des fichiers nommés sans extension.

David Gacías Lacruz
la source
10
Ceci (à propos des annuaires) n'est pas vrai. Rien ne peut vous empêcher d'avoir un répertoire avec extension
Romeo Ninov