IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Création de plusieurs dossiers à la fois


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut Création de plusieurs dossiers à la fois
    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.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 726
    Par défaut
    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

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut
    Merci bah. Je ne suis pas expert en bash. Mais le format que je voudrais avoir est 22_04_2014.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 726
    Par défaut
    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.

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    Bonjour,

    Il n'y a jamais que 12 mois. Pourquoi ne pas mettre le nombre de jours dans un tableau figé?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbjours=( 31 28 31 30 31 30 31 31 30 31 30 31 )
    puis, pour accéder à la valeur de mai:

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 418
    Par défaut
    Bonjour,
    Exemple pour tous les jour du mois de février (sans connaitre le nombre de jour dans le mois):
    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
    Par contre, en général, on choisit plus Année-mois-jour, car plus simple pour faire un tri...

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 872
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Exemple pour tous les jour du mois de février (sans connaitre le nombre de jour dans le mois):
    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

    Citation Envoyé par N_BaH Voir le message
    ...puis passer cette liste à xargs pour compléter le nom des répertoires, et les créer.
    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]

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 726
    Par défaut
    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

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 418
    Par défaut
    C'est vrai que le calcul est laborieux :
    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
    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
    $ 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
    J'aurai dû utiliser printf au lieu de echo pour reformater les nombres (par exemple 1 en 01), mais bon...

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 872
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    pour le mois courant :[code=BASH]$ ar=( $(seq -w 1 $(date -d "2014-$(($(date +%m)+1))-01 -1day" +%d)) )
    seq -w => connaissais pas

    Citation Envoyé par disedorgue Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ date +%d --date="2014/03/01 1 day ago"
    28
    Pfff. C'est là que je vois qu'on perd très vite quand on ne pratique pas (c'est vrai, si je réfléchis bien, j'ai plus administré de réseaux depuis 2008 quoi )

    Attention, toutefois à ton "mois+1" parce que si mois=12
    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]

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 726
    Par défaut
    ouaips
    'va falloir ajouter quelques tests pour valider ce qui est passé à date.

Discussions similaires

  1. [Batch] Création d'un dossier aléatoire parmis plusieur
    Par Auzingueur dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 30/05/2014, 03h18
  2. Voir les fichiers de plusieurs dossier en une fois
    Par Yepazix dans le forum Windows 7
    Réponses: 4
    Dernier message: 25/04/2012, 10h02
  3. Réponses: 3
    Dernier message: 02/08/2009, 12h31
  4. creation de plusieur table à la fois .
    Par donny dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/05/2005, 12h31
  5. [Composant] Drag & Drop de plusieurs valeurs à la fois
    Par slowpoke dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/12/2003, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo