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" }

Réponses:


76

Essaye ça:

gci . *.* -rec | where { ! $_.PSIsContainer }

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

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

-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.


10
Ceci (à propos des annuaires) n'est pas vrai. Rien ne peut vous empêcher d'avoir un répertoire avec extension
— Romeo Ninov
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.