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

Если у меня есть следующие каталоги в пути / TMP

1.1.0000-021, 1.1.0000-005, 1.1.0000-018, 1.1.0000-004

Я должен удалить каталог 1.1.0000-004 в пути /tmp как его самый старый каталог.

Я пытался с rm -rf /base /path -type d -ctime 4, но это основано на последнем файле, не уверенном в получении самого старого номера для удаления.

1 ответ1

0

Вы можете использовать следующую цепочку:

ls: список файлов / каталогов

sort -nr: сортировать файлы / каталоги по номерам в обратном порядке

tail: оставить из списка только последние $ n (здесь: 4) записи (если осталось только 4, список будет пустым)

например:

ls | sort -nr | tail +5 

Затем возьмите файлы и удалите их; (то есть с xargs + rm)

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