Как создать несуществующие подкаталоги рекурсивно с помощью Bash?

Я создаю быстрое резервное копирование script, которое сбрасывает некоторые базы данных в красивую/аккуратную структуру каталогов, и я понял, что мне нужно протестировать, чтобы убедиться, что каталоги существуют до их создания. В коде у меня есть работы, но кажется, что есть лучший способ сделать это. Любые предложения?

[ -d "$BACKUP_DIR" ] || mkdir "$BACKUP_DIR"
[ -d "$BACKUP_DIR/$client" ] || mkdir "$BACKUP_DIR/$client"
[ -d "$BACKUP_DIR/$client/$year" ] || mkdir "$BACKUP_DIR/$client/$year"
[ -d "$BACKUP_DIR/$client/$year/$month" ] || mkdir "$BACKUP_DIR/$client/$year/$month"
[ -d "$BACKUP_DIR/$client/$year/$month/$day" ] || mkdir "$BACKUP_DIR/$client/$year/$month/$day"

Ответы

Ответ 1

Вы можете использовать параметр -p, который задокументирован как:

-p, --parents

нет ошибки, если она существует, при необходимости создайте родительские каталоги

Итак:

mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"

Ответ 2

$ mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"