В macOS команда split
работает несколько иначе:
$ tar cvzf - foo | split -b 2500m - foo.tgz.
Ваш подстановочный знак $BACKUP_SETS[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
не соответствует имени вашего каталога 2018_Aug_23
.
Вместо этого вы должны назвать свой каталог 20180823
, тогда он будет виден вашему сценарию. Кроме того, названные месяцы не сравниваются правильно(Apr
<Mar
).
Чтобы сделать имя каталога более читаемым, вы можете назвать свои каталоги, например, 2018-08-23
и использовать подстановочный знак $BACKUP_SETS[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
.
find "$BACKUP_SETS" -type f -mtime +2 -exec rm {} \;
find "$BACKUP_SETS" -type d -mindepth 1 -mtime +2 -exec rmdir {} \;
Каталоги будут удалены через пару дней после их последнего файла.
Как упоминалось в комментарии, вы не можете использовать <
для сравнения названий месяцев:
(( '2018-Aug-29' < '2018-Feb-28' )) && echo 'Uh oh, August is before February' || echo 'Sanity prevails'
Uh oh, August is before February
Если вы хотите лексически сравнивать строки даты, я бы посоветовал вам использовать формат ГГГГ -ММ -ДД.
Однако лучше использовать find
для удаления старых каталогов независимо от соглашения об именах:
find "$BACKUP_SETS" -mindepth 1 -maxdepth 1 -type d -mtime +2 -print -exec echo rm -rf {} \;
Само собой разумеется, удалите echo
, если вы хотите, чтобы он работал по-настоящему.