Question Tri Fichier

Plus d'informations
il y a 17 ans 4 mois #3047 par ALCABELARD
Tri Fichier a été créé par ALCABELARD
Bonjour,

Via la commande suivant, je récupère des fichiers PST supérieur à 2Go:

Get-ChildItem -Include *.pst -Recurse -Force|Where-Object {$_.length -gt 2000000000}

Maintenant, je souhaiterai obtenir les 20 plus gros fichier, faire un \"TOP20\" si je puis dire..!
Mais le problème est que je suis nul sachant que pour obtenir ce résultat, j'ai passé une après midi, c'est pour vous dire....

Je sais que pour certains, c'est un jeu d'enfant mais pour moi, c'est la galère....!

Merci d'avance pour votre aide.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 4 mois #3050 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Tri Fichier
Yoann écrit:

Mais le problème est que je suis nul sachant que pour obtenir ce résultat, j'ai passé une après midi, c'est pour vous dire....

Ce n'est pas une question de compétence mais de connaissances. Je te rassure, moi cela fait 4 jours que galère avec PowerShell et Xpath :angry:

Bref; Il faut utiliser le cmdlet Sort-Object, pour trier l'ensemble, associé à Select-Object, pour récupérer les n premiers ou n derniers d'une liste.
[code:1]
Get-ChildItem -Include *.pst -Recurse -Force|Where-Object {$_.length -gt 2000000000}|Sort length -desc|Select -first 20|Ft length, Fullname
[/code:1]
Les interrogations de fichier peuvent être simplifiées si on énonce clairement le résultat à obtenir, ce qui est ton cas :
[code:1]
#Segment 1 : Tous Les fichiers PST
Get-ChildItem -Include *.* -Recurse -Force
#Segment 2 : supérieur à 2 Go
Where-Object {$_.length -gt 2000000000}
#Segment 3 : obtenir les gros fichiers
Sort length -desc
#Segment 4 : Seulement les 20 plus gros
Select -first 20
[/code:1]
Ensuite il faut rechercher dans les cmdlet mais le plus souvent c'est dans les paramètres des cmdlets de base qu'on recherche.

Un autre exemple :
[code:1]
# Recherche tous les fichiers Winform d'une arborescence
# le nom fini uniquement par \".Designer.cs\"
# Le début peut être quelconque = *
# sauf = *.ascx.designer.cs
# sauf = *.aspx.designer.cs
# sauf les fichiers des répertoires dont le nom finit par \"Properties\", donc :
# sauf = Ressources.designer.cs
# sauf = Settings.designer.cs
#
#Mémorise le répertoire courant,
$local:«»Push=Get-Location

cd $PathProjets
#Segment 1 : Recherche tous les fichiers Winform d'une arborescence, on exclut ceux des projets WEB
#Segment 2 : On exclut les fichiers contenus dans les répertoires dont le nom se termine par Properties
#Segment 3 : On enregistre le nom complet des fichiers trouvés
Get-ChildItem -recurse -include *.Designer.cs -exclude *.as[cp]x.designer.cs|`
where {(Split-Path ($_).Fullname) -notmatch 'Properties$'}|`
ForEach {($_).Fullname}

#Restaure le path
cd $local:«»Push
[/code:1]
De plus si tu places tes requêtes sur + lignes la relecture/maintenance est plus facile.
:-)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.054 secondes
Propulsé par Kunena