каталог Removing и это являются содержанием с %Y _ % b _ % d формат

В macOS команда split работает несколько иначе:

$ tar cvzf - foo | split -b 2500m - foo.tgz.
-1
29.08.2018, 15:14
3 ответа

Ваш подстановочный знак $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].

3
28.01.2020, 05:06
find "$BACKUP_SETS" -type f -mtime +2 -exec rm {} \;
find "$BACKUP_SETS" -type d -mindepth 1 -mtime +2 -exec rmdir {} \;

Каталоги будут удалены через пару дней после их последнего файла.

1
28.01.2020, 05:06

Как упоминалось в комментарии, вы не можете использовать <для сравнения названий месяцев:

(( '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, если вы хотите, чтобы он работал по-настоящему.

1
28.01.2020, 05:06

Теги

Похожие вопросы