2 votes

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

Je travaille sur un projet où je dois créer ce type de structure de dossier avec un compte FTP. Je n'ai que les détails du compte FTP et aucun accès au serveur,

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

    YYYY
    |_MM
    |_DD

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

Merci de m'indiquer quelle est la meilleure approche pour terminer sans créer manuellement le dossier.

EDITED Après quelques indications des commentaires/

J'ai écrit ce script pour créer la structure du dossier mais le concept de date ne fonctionnait pas avec mes script.

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

1voto

Arkadiusz Drabczyk Points 1810

Les éléments suivants bash script créera la structure de répertoire 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

Utilisation 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 permettant de vérifier le nombre de jours d'un mois donné est la suivante de ici .

0voto

steeldriver Points 118154

Avec GNU date Vous pouvez le faire en incrémentant la date directement et en utilisant des séparateurs de chemin dans le format, par exemple.

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 l'écran d'affichage). while ) de manière appropriée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X