Regex для файлов резервных копий, который содержит формат даты и расширение .zip в bash - PullRequest
0 голосов
/ 10 сентября 2018

Я новичок в bash и мне нужна помощь в выборе файлов с определенным форматом даты и расширением .zip. Я хотел бы использовать регулярное выражение для выбора правильных файлов. Ниже приведен формат файлов, которые я хочу выбрать

2017-Apr-13--2315.zip

Таким образом, в основном это год, месяц в трехбуквенных словах, день и время резервного копирования, то есть 4 цифры непосредственно перед расширением .zip. Я изо всех сил пытаюсь понять это правильно на Regex101

В конце концов, я хочу выбрать правильные файлы и удалить все резервные копии, но оставить последние 6 резервных копий. Команда, которую я использую, ниже

find . -maxdepth 1 -type f | tac | tail -n +7 | xargs rm -rf

Но в каталоге есть и другие файлы, которые не являются резервными копиями. Поэтому мне нужно выбрать правильные файлы с регулярным выражением, соответствующим формату файла, который я указал выше.

1 Ответ

0 голосов
/ 10 сентября 2018

После regex может работать с find:

find . -regextype egrep -iregex '.*/[0-9]{4}-[a-z]{3}-[0-9]{2}--[0-9]{4}\.zip$'

Чтобы удалить соответствующий файл, вы можете использовать:

find . -regextype egrep -iregex '.*/[0-9]{4}-[a-z]{3}-[0-9]{2}--[0-9]{4}\.zip$' -delete
...