У меня есть список каталогов, отформатированных как номера версий, и я хотел бы найти N самых старых каталогов и удалить их. Например:
/1.2.3.4
/1.2.3.5
/1.2.3.6
Я попробовал несколько вещей, но я не могу понять, куда мне нужно идти.
Моя первая попытка была такой:
ls directory | sort Name | select -first 5 | rm -r
Однако я не уверен, что это сработает при любых обстоятельствах, потому что это (я полагаю) будет естественным образом. Всегда ли вернутся правильные результаты?
Моей следующей мыслью было, что я могу использовать System.Version
для сортировки. Итак, я закончил с этим:
ls directory | %{[System.Version]$_.Name } | sort | select -first 5 | ???
Проблема в том, что я не уверен, как связать результат каталога с сортировкой ... Какой лучший способ сделать это?
gci \\directory
производит
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/19/2011 5:19 PM 1.0.1052.54849
d---- 12/19/2011 5:29 PM 1.0.1053.54850
d---- 12/19/2011 5:36 PM 1.0.1054.54851
d---- 12/20/2011 2:11 PM 1.0.1056.54875
d---- 12/12/2011 10:39 AM 1.0.991.54625
d---- 12/12/2011 12:08 PM 1.0.992.54627
d---- 12/12/2011 12:22 PM 1.0.993.54628
d---- 12/12/2011 1:15 PM 1.0.994.54630
d---- 12/12/2011 2:45 PM 1.0.996.54636
d---- 12/12/2011 3:34 PM 1.0.997.54640
d---- 12/12/2011 3:48 PM 1.0.998.54641
gci \\directory | Sort-Object { $_Name -as [Version] }
производит
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/12/2011 1:15 PM 1.0.994.54630
d---- 12/12/2011 12:22 PM 1.0.993.54628
d---- 12/12/2011 2:45 PM 1.0.996.54636
d---- 12/12/2011 3:48 PM 1.0.998.54641
d---- 12/12/2011 3:34 PM 1.0.997.54640
d---- 12/12/2011 12:08 PM 1.0.992.54627
d---- 12/19/2011 5:29 PM 1.0.1053.54850
d---- 12/19/2011 5:19 PM 1.0.1052.54849
d---- 12/19/2011 5:36 PM 1.0.1054.54851
d---- 12/12/2011 10:39 AM 1.0.991.54625
d---- 12/20/2011 2:11 PM 1.0.1056.54875
Имеет ли значение, что это общий сетевой ресурс? Я не понимаю, почему это не работает ... Я сделал быструю проверку работоспособности, и Array.Sort
для версий, которые я создал в модульном тесте, отсортировано правильно.