Tworzę skrypt szybkiego tworzenia kopii zapasowych, który zrzuci niektóre bazy danych do ładnej / schludnej struktury katalogów i zdałem sobie sprawę, że muszę przetestować, aby upewnić się, że katalogi istnieją, zanim je utworzę. Kod, który mam, działa, ale wydaje się, że jest na to lepszy sposób. Jakieś sugestie?
[ -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"
bash
shell
recursion
subdirectory
Topher Fangio
źródło
źródło
Odpowiedzi:
Możesz użyć
-p
parametru, który jest udokumentowany jako :Więc:
mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
źródło
alias mkdirs=mkdir -p
$ mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
źródło
Chociaż istniejące odpowiedzi zdecydowanie rozwiązują cel, jeśli chcesz powielić zagnieżdżoną strukturę katalogów w dwóch różnych podkatalogach, możesz to zrobić
mkdir -p {main,test}/{resources,scala/com/company}
Utworzy następującą strukturę katalogów w katalogu, z którego jest wywoływana
├── main │ ├── resources │ └── scala │ └── com │ └── company └── test ├── resources └── scala └── com └── company
Przykład został wzięty z tego linku do tworzenia struktury katalogów SBT
źródło
{...,...}
jest w bash i dlaczego to, co robisz, ma sens. Krótkie wyjaśnienie rozszerzenia nawiasów byłoby korzystne dla innych użytkowników. „Możesz to zrobić” i zdobyć „to” pozostawia trochę wyobraźni.źródło
newDir/
.