Bonjour,
Je voudrais créer plusieurs dossiers à la fois. Par exemple je voudrais créer au début d'un mois donné, un dossier par jour.
Merci de votre assistance.








Bonjour,
Je voudrais créer plusieurs dossiers à la fois. Par exemple je voudrais créer au début d'un mois donné, un dossier par jour.
Merci de votre assistance.
Bonjour,
en bash, pas de problème, utilise le développement de accolades :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ echo mois/{{lun,m{ar,ercre},jeu,vendre,same}di,dimanche} mois/lundi mois/mardi mois/mercredi mois/jeudi mois/vendredi mois/samedi mois/dimanche








Merci bah. Je ne suis pas expert en bash. Mais le format que je voudrais avoir est 22_04_2014.
mouais, bash ne va pas t'aider là
il faut trouver les commandes qui listeront les jours entre le premier du mois et le dernier jour du mois, puis passer cette liste à xargs pour compléter le nom des répertoires, et les créer.
Bonjour,
Il n'y a jamais que 12 mois. Pourquoi ne pas mettre le nombre de jours dans un tableau figé?
puis, pour accéder à la valeur de mai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part nbjours=( 31 28 31 30 31 30 31 31 30 31 30 31 )
Code : Sélectionner tout - Visualiser dans une fenêtre à part ${nbj[4]}
Bonjour,
Exemple pour tous les jour du mois de février (sans connaitre le nombre de jour dans le mois):
Par contre, en général, on choisit plus Année-mois-jour, car plus simple pour faire un tri...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ XX=1; while date +%d_%m_%Y --date="2014/02/$XX" 2>/dev/null ; do ((XX+=1)); done | xargs echo 01_02_2014 02_02_2014 03_02_2014 04_02_2014 05_02_2014 06_02_2014 07_02_2014 08_02_2014 09_02_2014 10_02_2014 11_02_2014 12_02_2014 13_02_2014 14_02_2014 15_02_2014 16_02_2014 17_02_2014 18_02_2014 19_02_2014 20_02_2014 21_02_2014 22_02_2014 23_02_2014 24_02_2014 25_02_2014 26_02_2014 27_02_2014 28_02_2014
Bonjour
Voici une autre façon de procéder
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ mois=2 # Afin de rendre le truc plus paramétrable $ for i in $(seq $(date -d @$(($(date -d "2014-$(expr \( $mois + 1 \) % 12)-01" +%s) - 1)) +%d)); do printf "%02d_%02d_2014 " $i $mois; done 01_02_2014 02_02_2014 03_02_2014 04_02_2014 05_02_2014 06_02_2014 07_02_2014 08_02_2014 09_02_2014 10_02_2014 11_02_2014 12_02_2014 13_02_2014 14_02_2014 15_02_2014 16_02_2014 17_02_2014 18_02_2014 19_02_2014 20_02_2014 21_02_2014 22_02_2014 23_02_2014 24_02_2014 25_02_2014 26_02_2014 27_02_2014 28_02_2014
Exactement. On rajoute ensuite |xargs mkdir derrière et c'est torché.
Bon, c'était plus pour la forme (utiliser seq sur le nb de jours dans le mois) et aussi montrer qu'il y a rarement une seule possibilité. Mais bon, ton exemple est quand-même plus lisible (gros calcul monstrueux chez-moi afin d'obtenir le 1er du mois suivant pour ensuite revenir une seconde en arrière).
Toutefois, les deux exemples ont l'avantage indéniable de gérer les années bissextiles sans se fatiguer à créer un tableau contenant des informations que l'on a déjà pour peu que l'on sache les récupérer et qui, en plus, est faux un an sur quatre...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
pour le mois courant :
Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ ar=( $(seq -w 1 $(date -d "2014-$(($(date +%m)+1))-01 -1day" +%d)) ) $ printf -v list "%s_$(date +%m_%Y) " "${ar[@]}" $ mkdir $list
C'est vrai que le calcul est laborieux:
Par contre ton exemple via seq, est plus optimum puisque tu n'appelles la commande date qu'une fois, donc en simplifiant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ date +%d --date="2014/03/01" 01 $ date +%d --date="2014/03/01 1 day ago" 28
J'aurai dû utiliser printf au lieu de echo pour reformater les nombres (par exemple 1 en 01), mais bon...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ seq 1 $(date +%d --date="2014/$((mois+1))/01 1 day ago") | xargs -IXX echo -n "2014_${mois}_XX " 2014_2_1 2014_2_2 2014_2_3 2014_2_4 2014_2_5 2014_2_6 2014_2_7 2014_2_8 2014_2_9 2014_2_10 2014_2_11 2014_2_12 2014_2_13 2014_2_14 2014_2_15 2014_2_16 2014_2_17 2014_2_18 2014_2_19 2014_2_20 2014_2_21 2014_2_22 2014_2_23 2014_2_24 2014_2_25 2014_2_26 2014_2_27 2014_2_28![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
ouaips
'va falloir ajouter quelques tests pour valider ce qui est passé à date.
Partager