2015-02-23 2 views
-2

У меня есть список папок с папками с именем 2014-01-0,2015-05-1 и т. Д., Где 01 и 05 - номер недели с учетом 52 недель в году
Мне нужно написать сценарий в Linux, который хранит последние 2 папки и удаляет остальные. Мое решение состоит в том, чтобы сохранить список каталогов в массиве, а затем сравнить их, но я не могу понять, как удалить «-» из имени папки и сохранить ее в массиве. Если у вас есть какое-либо другое решение, не стесняйтесь упомянуть его.Удаление папки на основе имени

+1

'для имени в ...; do name = $ {name // - /}; ... '? – twalberg

+0

Большое спасибо. Новое в скрипте – Himanshu

+0

@twalberg Можете ли вы помочь мне в том, как добавить его в массив. Я только что начал писать сценарии, и указанное решение работает, но они нигде не хранятся. Что делать, если мне нужно сохранить список в виде массива. Я знаю, что 'array = ($ (ls -t * /))' хранит список как массив, но затем мне также нужно удалить «-» из этого массива – Himanshu

ответ

0

Когда все слабые числа beneuth 10 имеют передний ноль, вы можете просто использовать порядок, заданный ls.
Получение двух последних строк может быть уменьшено с tail -2.
Вы хотите, чтобы пропустить их следующее решение загрязнен (но хорошо для команд обучения):

find . -type d -name 2\* | grep -v $(ls |tail -2|head -1) | grep -v $(ls | tail -1) | xargs echo rm -r 

Удаление слова эхо будет делать работу, если вы будете иметь по крайней мере 2 директории. Вы никогда не должны предполагать, что ...

Когда вы сначала определяете директории, которые хотите сохранить (с хвостом/головой) и хранить их в var, вы можете исключить их после тестирования того, что они существуют.

Смежные вопросы