Tenho certeza que alguém pode fazer isso melhor, mas aqui está uma maneira de ser totalmente compatível com o lynix. Ele tem o benefício de deixá-lo com uma revfunção de string reutilizável para sua caixa de ferramentas, ou seja, classifica a string inteira e não apenas o último caractere:
function rev ($s) {return -join ($s[$s.Length..0])}
dir | foreach{rev($_.name)} | sort | foreach{rev($_)}
Acho que o foreach aqui demonstra bem como os tubos do PowerShell são matrizes e não simplesmente cadeias de caracteres como no * nix.
Demorei um pouco para perceber que eu tinha que usar apenas $_e não $_.namedentro do 2º foreach. Então, eu aprendi algo sobre variações no conteúdo da matriz de um canal para o outro.
* O crédito pelas tripas da minha função rev vai para http://rosettacode.org/wiki/Reverse_a_string#PowerShell
Funciona como lynix:
- dir | sort -Property @ {Expression = {$ n = $ _. Name.ToCharArray (); [Array] :: Reverse ($ n); [String] :: Join ("", $ n)}}
Funciona como o lynix, mas muito, muito lento:
- ls -n | sort {$ _ [3e3..0]}
Não funcione como o lynix, ou seja , falhe ao classificar todos os caracteres dos nomes dos arquivos; (classifica apenas o último caractere da string):
- dir | classificar {$ .name.Substring ($ .name.length-1)}
- dir | classifique {$ _. name [-1]}
- ls | sort {$ _. Nome [-1]}
- ls | classificar {"$ _" [- 1]}
- ls -n | sort {$ _ [- 1]}