создайте новую структуру папок в рамках Учетной записи FTP

Я работаю над проектом, где я должен создать этот вид Структуры папок с Учетной записью FTP. У меня просто есть банковский реквизит FTP и никакой доступ к серверу,

Я могу соединиться с FTP и могу создать каталог вручную, но я должен создать такую структуру папок в корневом каталоге ftp.

    YYYY
    |_MM
    |_DD

2018
|_06
 |_01
 |_02
 |_03
 |_..............30
|_07
 |_01
 |_02
 |_03
 |_..............31

совет, каков будет лучший подход для окончания его без вручную создания папки.

ОТРЕДАКТИРОВАННЫЙ После некоторой подсказки из комментариев /

Я записал этот сценарий для создания структуры папок, но понятие даты не работало с моими сценариями.

#/bin/bash
for i in $(seq -w 12)
do  
    cd /home/user/upload/2018/
    mkdir $i
    cd $i
    for j in $(seq -w 31)
    do 
        mkdir $j
    done
done
2
задан 1 June 2018 в 15:07

2 ответа

Следующее bash сценарий создаст структуру каталогов, которую Вы хотите:

#!/usr/bin/env bash

set -e

year=2018

mkdir "$year"

for month in {6..12}
do
    mkdir "$year"/"$month"
    days=$(cal "$month" "$year" | awk 'NF {DAYS = $NF}; END {print DAYS}')

    for ((i=1; i <= days; i++))
    do
    mkdir "$year"/"$month"/"$(printf "%02d\n" "$i")"
    done
done

Использовать tree чтобы видеть, как структура похожа:

$ tree 2018
2018
├── 10
│  ├── 01
│  ├── 02
│  ├── 03
│  ├── 04
│  ├── 05
│  ├── 06
│  ├── 07
│  ├── 08
│  ├── 09
│  ├── 10
│  ├── 11
│  ├── 12
│  ├── 13
│  ├── 14
│  ├── 15
│  ├── 16
│  ├── 17
│  ├── 18
│  ├── 19
│  ├── 20
│  ├── 21
│  ├── 22
│  ├── 23
│  ├── 24
│  ├── 25
│  ├── 26
│  ├── 27
│  ├── 28
│  ├── 29
│  ├── 30
│  └── 31
├── 11
│  ├── 01
│  ├── 02
(...)

Метод для проверки, сколько дней находится в данном месяце, появляется отсюда.

1
ответ дан 2 December 2019 в 04:43

С GNU date, Вы могли сделать это путем постепенного увеличения даты непосредственно и использования разделителей пути в формате, например.

d='2018/06/01'
while [ "$d" != "2018/12/31" ]; do 
  mkdir -p "$d"
  d="$(date '+%Y/%m/%d' -d "$d + 1 day")"
done

Выберите дату начала и дата окончания (в while условие) соответственно.

0
ответ дан 2 December 2019 в 04:43

Другие вопросы по тегам:

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