web-dev-qa-db-fra.com

créer une nouvelle structure de dossiers dans le compte FTP

Je travaille sur un projet où j'ai besoin de créer ce type de structure de dossiers avec un compte FTP. J'ai juste les détails du compte FTP et je n'ai pas accès au serveur,

Je peux me connecter avec FTP et créer manuellement un répertoire mais j'ai besoin de créer une telle structure de dossiers dans le répertoire racine ftp.

    YYYY
    |_MM
    |_DD

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

veuillez indiquer quelle sera la meilleure approche pour le terminer sans créer manuellement de dossier.

MODIFIÉ Après quelques indices dans les commentaires /

J'ai écrit ce script pour créer la structure des dossiers mais le concept de date ne fonctionnait pas avec mes 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
2
kunal

Le script bash suivant créera la structure de répertoires que vous souhaitez:

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

Utilisez tree pour voir à quoi ressemble la structure:

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

La méthode pour vérifier combien de jours sont dans un mois donné vient d'ici .

1

Avec GNU date, vous pouvez le faire en incrémentant directement la date et en utilisant des séparateurs de chemin au format, par ex.

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

Choisissez la date de début et la date de fin (à l'intérieur de la condition while) de manière appropriée.

0
steeldriver