Я работаю над проектом, где я должен создать этот вид Структуры папок с Учетной записью 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
Следующее 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
(...)
Метод для проверки, сколько дней находится в данном месяце, появляется отсюда.
С 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
условие) соответственно.