Je suis nouveau à l'alimentation shell.tri personnalisé dans PowerShell
Mon problème est que j'ai les noms de fichiers en format suivant:
[ignore-prefix]-[important-middle]-[ignore-suffix]-[name-with-digits]
J'ai besoin de trier selon les règles suivantes: tout d'abord par partie centrale, puis par nom, dans l'ordre naturel (c.-à-foobar10> foobar2) . Je ne connais pas la valeur du préfixe, mais je connais le séparateur (tiret).
donc ma première tentative, naturellement:
filelist | Sort-Object -property @{Expression=`
{$_.FullName.SubString($_.FullName.IndexOf("-")+1)}}
Cela a un problème que le suffixe affecte l'ordre (ignore-aaa-1ignore-wname) est trié avant d'ignorer-aaa-2ignore-aname), donc:
$filelist | Sort-Object -property @{Expression=`
{$_.FullName.SubString($_.FullName.IndexOf("-")+1,`
$_.FullName.SubString($_.FullName.IndexOf("-")+1).IndexOf("-"))}}
Ok, cela se trie par le milieu, mais déjà non-maniable. Si je devais ajouter un genre naturel, ce serait encore pire. Quoi de plus élégant moyen de le faire?
"$ part1, $ part2, $ part2" devrait être "$ part1, $ part2, $ part3" merci! – DennyRolling
Oui, je l'ai remarqué aussi. Fixé. –