Я уверен, что кто-то может сделать это лучше, но вот один способ, который полностью совместим с lynix. Его преимущество заключается в том, что вы можете использовать многоразовую revстроковую функцию для вашего набора инструментов, то есть сортировать всю строку, а не только последний символ:
function rev ($s) {return -join ($s[$s.Length..0])}
dir | foreach{rev($_.name)} | sort | foreach{rev($_)}
Я думаю, что foreach здесь хорошо демонстрирует, как каналы PowerShell являются массивами, а не просто строками, как в * nix.
Мне потребовалось немного времени, чтобы понять, что я должен использовать только, $_а не $_.nameвнутри 2-го foreach. Итак, я узнал кое-что о вариациях содержимого массива от одного канала к другому.
* Кредит на смелость моей функции rev идет на http://rosettacode.org/wiki/Reverse_a_string#PowerShell
Работает как Lynix:
- реж | sort -Property @ {Expression = {$ n = $ _. Name.ToCharArray (); [Массив] :: Reverse ($ п) [String] :: Join ( "", $ п)}}
Вроде работает как lynix, но очень-очень медленно:
- ls -n | sort {$ _ [3e3..0]}
Не работают как lynix, т.е. не сортируют все символы имен файлов; (сортирует только самый последний символ строки):
- реж | sort {$ .name.Substring ($ .name.length-1)}
- реж | sort {$ _. name [-1]}
- Ls | сортировать {. $ _ Name [-1]}
- Ls | сортировать { "$ _" [- 1]}
- ls -n | sort {$ _ [- 1]}