У меня есть имена папок в указанном ниже формате даты
31082018
04092018
01092018
05092018
02092018
03092018
06092018
Каждый день папка создается, а старые изменяются.
Я пытаюсь найти сценарий Unix, который удалил бы все папки, кроме 3 вновь созданных, основанных на дате создания.
Если я использую find . -type d -mtime +2 -exec rm -rf {} \;
, это мне не помогает, потому что старые папки модифицируются, а -mtime и -ctime рассматривают их как последние.
Например, в указанные выше даты, кроме каталога с именами 04092018,05092018 и 06092018, все остальные должны быть удалены.
Я пытаюсь использовать приведенный ниже сценарий для получения желаемого результата, но не могу заменить $ last переменную в приведенном ниже сценарии оболочки
#! /bin/bash
last=$(date -d '-2 days' +%d%m%Y);
find /orabackup/RMAN/SYMETRA -type d -exec bash -c '
cd ${1%/*}
dir=${1##*/} day=${dir:0:2} month=${dir:2:2} year=${dir:4:4}
[[ $dir =~ [0-9]{8} && $year$month$day < $last ]] && echo rm -rf "$1"
' -- {} \;