Jak tworzyć nieistniejące podkatalogi rekurencyjnie za pomocą Bash?
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ą przed ich utworzeniem. Kod, który mam działa, ale wydaje się, że jest lepszy sposób, aby to zrobić. 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"
3 answers
Możesz użyć parametru -p
, który jest udokumentowany jako :
-P, --parents
No error if existing, make parent directory as needed
Więc:
mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-09 12:48:59
$ mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-13 20:44:18
Chociaż istniejące odpowiedzi zdecydowanie rozwiązują ten cel, jeśli chcesz replikować 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 pod katalogiem, z którego jest wywoływany
├── main
│ ├── resources
│ └── scala
│ └── com
│ └── company
└── test
├── resources
└── scala
└── com
└── company
Przykład został zaczerpnięty z tego linku do tworzenia struktury katalogów SBT
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-22 04:50:51