У меня есть каталог, в котором есть следующие папки.

Data-2014-07-10-0240
Data-2014-07-10-0340
Data-2014-07-11-1232
Data-2014-07-12-0530
Data-2014-07-13-1210

Я хочу сохранить только последние две папки и удалить остальные. Папка имеет следующий формат: Data-YYYY-MM-DD-HHMM .

Есть ли способ, с помощью которого я могу сравнивать имена папок, сохранять последние и удалять остальные? Я могу разместить это позже в моем сценарии оболочки.

1 ответ1

1

Я предполагаю, что название каталогов также является отметкой времени их создания. Если это так, то вы можете использовать ls для вывода списка файлов в соответствии со временем модификации каталогов.

Это перечислит каталоги в порядке самых новых

cd /PATH/TO/PARENT-DIRECTORY/
ls -lt 

Чтобы удалить все каталоги, кроме 2 новейших файлов:-

cd /PATH/TO/PARENT-DIRECTORY/
ls -lt | tail -n +4 | awk '{print $9}' | xargs rm -r

Примечание: во- первых, пожалуйста, попробуйте в тестовой среде и полностью подтвердите, если это именно то, что вы хотите выполнить, и если этот скрипт работает с вашим набором каталогов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .