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
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 .
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.