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.