Войти

Показать полную графическую версию : Скрипт для выборки самых новых файлов


sfap
05-10-2020, 16:27
Здравствуйте.
У меня появилась необходимость формировать список самых последних резервных копий, при чем "свежесть" файлов нельзя узнать по атрибутам (т.е варианты использования -mtime, к сожалению отпадают), т.к файлы в хранилище заливаются не сразу после того, как они сделались, но зато само имя файла уже содержит в себе дату создания.

Несортированый список выглядит, например так (на самом деле он значительно больше):

vzdump-qemu-141-2020_10_02-00_45_45.vma.gz
vzdump-qemu-141-2020_09_28-00_45_16.vma.gz
vzdump-qemu-126-2020_09_28-00_00_02.vma.gz
vzdump-qemu-141-2020_09_30-00_46_19.vma.gz
vzdump-qemu-126-2020_09_30-00_00_02.vma.gz
vzdump-qemu-106-2020_10_02-00_03_53.vma.gz
vzdump-qemu-135-2020_09_30-00_35_45.vma.gz
vzdump-qemu-126-2020_10_02-00_00_02.vma.gz
vzdump-qemu-135-2020_09_28-00_36_20.vma.gz
vzdump-qemu-135-2020_10_02-00_35_57.vma.gz
vzdump-qemu-106-2020_09_28-00_03_45.vma.gz
vzdump-qemu-106-2020_09_30-00_04_12.vma.gz

Здесь, например часть названия vzdump-qemu-141 означает, что это бэкап виртуальной машины, имеющей ID 141, но как видно из списка, для этой ВМ он здесь не один, есть и судя по названию, включающему дату, vzdump-qemu-141-2020_10_02-00_45_45.vma.gz является самым свежим, а vzdump-qemu-141-2020_09_28-00_45_16.vma.gz и vzdump-qemu-141-2020_09_30-00_46_19.vma.gz, соответственно не нужны в новом списке.
То же самое необходимо проделать и со строками для виртуалок, имеющих другие ID.
По скольку тут нет абсолютно одинаковых строк, не вижу варианты использования uniq и sort (или не умею их правильно готовить).
Помогите, пожалуйста, если есть соображения.

DJ Mogarych
02-11-2020, 09:20
ls *.vma.gz |sort -rk1.17 |head -4
https://superuser.com/questions/1092282/bash-sort-by-not-first-character
https://stackoverflow.com/questions/5885934/bash-function-to-find-newest-file-matching-pattern




© OSzone.net 2001-2012