Shell Script для удаления папки по дате создания - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть имена папок в указанном ниже формате даты

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"
' -- {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...