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 :

Manipulation de dossiers et fichiers


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Par défaut Manipulation de dossiers et fichiers
    Bonjour,
    Je débute en bash et j'aimerai arriver au résultat ci dessous.

    Nom : Capture.PNG
Affichages : 502
Taille : 16,0 Ko

    Voici ce que j'ai fais jusqu'à maintenant et je bloque sur la partie ventilation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    #! /bin/bash
     
    #fonction qui crée les dossiers et fichiers de départ
    createdirfile(){
       cd /home/fred/examen
       mkdir Resultats Etudiants Bulletins Backup Palmares
       cd /home/fred/examen/Resultats
       echo -e "Michel 10\nFred 8" >> math
       echo -e "Michel 20\nLuc 3\nPol 10\nFred 13" >> OS
       echo -e "Luc 9\nMichel 14\nFred 19" >> analyse
       echo -e "Luc 7\nMichel 18\nPol 4" >>DB
    }
     
    #fonction qui efface les dossiers et fichiers de départ
    deldirfile(){
       cd /home/fred/examen
       rm -r Resultats Etudiants Bulletins Backup Palmares
    }
     
    #fonction qui boucle le fichier Resultats et récupère tous les noms de fichier qu'il contient dans un tableau.
    recupfilename(){
       cd ../Resultats
       files=(*)
       cd ..
    }
     
    #fonction qui boucle sur tous les fichiers du dossier Resultats et qui récupère
    #les noms des Etudiants pour créer un fichier à leur noms dans le dossier Etudiants'
    createfileEtudiants(){
       cd /home/fred/examen/Etudiants
       #boucle tous les fichiers du répertoire Résultats
       for fic in `ls /home/fred/examen/Resultats/*`
       do
          #lis chaque ligne de chaque fichiers
          while read ligne;
          do
             #récupère le premier mot -f1(nom etudiant) et crée un fichier avec son nom dans le dossier courant (xargs touch)
             #xargs construit et exécute des lignes de commandes à partir de l'entrée standard.
             echo $ligne | cut -f1 -d" " | xargs touch;
          done < $fic
       done
    }
     
    #menu de départ
    echo "Entrez votre choix"
    select choix in "Ventilation" "Bulletin" "Palmares" "Consultation" "Creation Documents" "Effacer Documents" "Quitter"
    do
       case "$REPLY" in
          1) echo "Menu Ventilation"
               recupfilename files
               echo "${files[@]}"
               createfileEtudiants;;
          2) echo "Menu Bulletin";;
          3) echo "Menu palmares";;
          4) echo "menu Consultation";;
          5) echo "Menu Création Document"
             createdirfile;;
          6) echo "Menu Effacer"
             deldirfile;;
          7) echo "Quitter"; break;;
       esac
    done
    je veux en gros:
    lire ligne de mes fichiers cours avec les résultats.
    dans chaque fichier cours, lire deux mots (nom et cote)
    voir si premier mot (etudiant existe)
    sinon le créer
    ajouter le nom du cours et le note dans le fichier de l'étudiant.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    Bonjour,

    en général, on n'utilise pas cd dans un script : on stocke le chemin dans une variable, et on fait précéder tout ce qui doit être fait dans le répertoire par la variable.

    ON N'UTILISE PAS ls DANS UN SCRIPT !!!
    parce que c'est inutile : c'est le shell qui exécute le développement, et la substitution de commandes ne protège pas les noms de fichiers "exotiques".

    read permet d'assigner plusieurs variables (cf. Comment lire un fichier, donc, cut est inutile.

    en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    chemin=/chemin/versLesRépertoires
    autreChemin=/autre/chemin
    for d in "$chemin"/*/
    do
       for f  in "$d"/*
       do
          if test -f "$f"
          then
             matiR="${f##*/}"
             while read nom note
             do
                echo "$matiR $note" >> "$autreChemin/$nom"
             done <"$f" #la redirection permet de ne pas recourir à `cat'
          fi
       done
    done
    pas testé.
    il y a peut-être une boucle inutile.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Par défaut
    Merci pour les infos,
    POur le LS, j'en parlerai à mon prof

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    s'il in/persiste, adresse-le moi, je lui donnerai des cours.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Par défaut

  6. #6
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Pourquoi faire simple quand on peut faire compliquer ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     for fichier in Resultats/* 
     do   
    	awk '{ gsub(".*/","",FILENAME); print FILENAME ": " $2 >> "Etudiant/"$1 }' $fichier
     done

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel est le meilleur langage pour manipuler des dossiers et des fichiers ?
    Par gstratege dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 13/10/2015, 10h08
  2. [VBA-A]Parcours d'une arborescence dossiers et fichiers
    Par sidneyvba dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2006, 16h58
  3. dossier ou fichier?
    Par Biosox dans le forum C++
    Réponses: 2
    Dernier message: 06/10/2005, 14h41
  4. Peut on manipuler le système de fichier par T-SQL?
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2003, 09h19
  5. Dossier ou Fichier avec ShellListView
    Par MoussDiouf dans le forum Langage
    Réponses: 6
    Dernier message: 14/06/2003, 12h33

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