cria uma nova estrutura de pastas dentro da conta FTP

2

Estou trabalhando no projeto onde preciso criar esse tipo de estrutura de pastas com conta FTP. Eu só tenho detalhes da conta FTP e nenhum acesso ao servidor,

Eu posso conectar-me ao FTP e criar um diretório manualmente, mas preciso criar essa estrutura de pastas no diretório raiz do ftp.

    YYYY
    |_MM
    |_DD

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

por favor, informe qual será a melhor abordagem para terminá-lo sem a criação manual da pasta.

EDITED After some hint from comments/

Eu escrevi esse script para criar a estrutura de pastas, mas o conceito de data não funcionou com meus scripts.

#/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
    
por kunal 01.06.2018 / 12:50

2 respostas

1

O script bash a seguir criará uma estrutura de diretório que você deseja:

#!/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

Use tree para ver como a estrutura se parece:

$ 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
(...)

O método para verificar quantos dias estão em um determinado mês vem de aqui .

    
por Arkadiusz Drabczyk 01.06.2018 / 13:52
0

Com o GNU date , você poderia fazer isso incrementando a data diretamente e usando separadores de caminho no formato, por exemplo,

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

Escolha a data de início e a data de término (dentro da condição while ) adequadamente.

    
por steeldriver 01.06.2018 / 15:15