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 :

shellscrip qui parcourt un repertoire donné en parametre


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut shellscrip qui parcourt un repertoire donné en parametre
    Bonjour ,
    quelqu'un peut m'aider à parcourir un repertoire donné en arguments et ses sous repertoire sans utilisé et ensuite je dois recopier tout les fichier que l'on compresse avec gzip ( en shellscript) et je n'ai pas le droit d'utilisé find et tar.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    as-tu ouvert la page man de gzip ?

    le script doit-il impérativement être strictement POSIX ? ou le choix du shell est-il libre ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    j'ai réussi à faire quelque chose mais je ne sais pas si c'est bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/bash
    touch Fichier_compresser 
    for i in "ls -R"
    do 
       if test -f $i
       then 
          cp -b $i Fichier_compresser
          $0$i 
       fi
    done
    gzip Fichier_compresser
    exit

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Voici l'enoncé de ce que je dois faire :
    Écrire un shellscript qui parcourt un répertoire donné en argument et ses sous-répertoires et recopie tous les fichiers qui le composent dans un même fichier que l'on pourra compresser grâce à gzip. Attention, les commandes find et tar sont proscrites.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    quand j'ai vu qu'il manquait un mot, je me suis dit : « chic ! un prof intelligent qui montre à ses élèves qu'on peut doit faire des scripts sans ls ! »

    bon, j'ai du me tromper, mais
    ON N'UTILISE PAS ls DANS UN SCRIPT !!!

    edit:
    vu que tu sembles pouvoir utiliser bash, intéresse-toi à l'option globstar.

    edit 2 : et testes tes commandes avant de les pondre dans un fichier script.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    c'est mon premier projet en programmation donc j'ai un peu de mal , pouvez vous me dire ce qui va et ce qui va pas , et ce qui manque svp ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/bash
    touch Fichier_compresser # inutile : touch sert à modifier la date d'un fichier.
    for i in "ls -R" # on n'utilise pas ls dans un script, regarde l'option globstar dans le man bash
    # et ce n'est pas comme ça qu'on effectue une substitution de commande. cf. man bash, et les tutoriels qui figurent dans ma signature
    do 
       if test -f $i # il faut toujours* mettre les variables entre guillemets, toujours*.
       then 
          cp -b $i Fichier_compresser # ça n'a pas de sens, tu copies le fichier trouvé sous le nom du fichier qui doit contenir les fichiers trouvés.
          $0$i # ça n'a pas de sens.
       fi
    done
    gzip Fichier_compresser
    * à moins de savoir pourquoi on ne le fait pas.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    si ce n'est pas touch pour créer un fichier alors quel est la commande pour créer un fichier vide qui permettra de copier les fichier trouvé?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    c'est la redirection (>, ou >>) du contenu des fichiers trouvés, qui créera le fichier temporaire.

    contrairement à ce que j'avais compris, l'énoncé demande de copier les fichiers dans un fichier temporaire, et non uniquement leur nom.
    il est question de concaténation.
    je corrige mes corrections.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut,
    Citation Envoyé par N_BaH Voir le message
    contrairement à ce que j'avais compris, l'énoncé demande de copier les fichiers dans un fichier temporaire, et non uniquement leur nom.
    il est question de concaténation.
    je corrige mes corrections.
    C'est pas un peu complètement idiot, cette histoire de concaténer tous les fichiers de tous les sous-dossiers d'un dossier donné dans un seul fichier ?
    Y a p'têt' une erreur dans l'énoncé... ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Je sait pas du tout si il ya une erreur mais le prof ne m'a pas donné plus d'information et je commence a paniquer car je dois le rendre pour mardi

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Citation Envoyé par Jipété Voir le message
    C'est pas un peu complètement idiot, cette histoire de concaténer tous les fichiers [...]?
    au vu de la page man de gzip, ce n'est surtout pas utile.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Pouvez vous me donner plus d'outil pour que je puisse reussir a faire quelque chose pour demain ?

  14. #14
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par El_masry96 Voir le message
    Pouvez-vous me donner plus d'outils pour que je puisse réussir à faire quelque chose pour demain ?
    Euh, tu es en train de nous dire que tu n'as rien capté en cours, que tu n'as pas été fichu de lever la main pour dire "msieur j'ai pas compris, là", et maintenant tu viens nous mettre la pression pour qu'on fasse ce travail (idiot) à ta place ?


    Citation Envoyé par N_BaH Voir le message
    au vu de la page man de gzip, ce n'est surtout pas utile.
    lol ! Bien vu !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    En fait je me suis inscrits en retard à l'université donc je n'ai pas pu suivre les cours de shell mais néanmoins j'ai quelque notions en shell de l'année car j'ai fais une année de dut informatique , et pas besoin de manquer de respect car je vous demande juste de me donner plus d'outil pour que je puisse avancer.

  16. #16
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Y a qu'à relire, N_BaH a déjà tout donné.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #17
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    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 286
    Points : 12 742
    Points
    12 742
    Par défaut
    Bonjour,

    Bah, moi, je vois ça dans le man de gzip :
    If you wish to create a single archive file with multiple members so that members can later be extracted independently, use an archiver such as tar or zip. GNU tar supports the -z option to invoke gzip transparently. gzip is designed as a complement to tar, not as a replacement.
    Cordialement.

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    j'ai réussi à faire ceci, mais quand je l'execute sa m'affiche : cela et ne marche pas et sa compresse le fichier Resultat ( j'ai essayé la commande touch sur mon terminal et sa me crée bien un fichier).

    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
    #!/bin/bash 
     
    touch Resultat
    for i in "$1"/*
    do 
       if test -f $i
       then 
          cp $i $Resultat
          echo 'les fichiers ont été copier avec succès'
          if test -d $i
          then 
             $0 $i
          else 
             echo ' cela ne marche pas'
          fi  
       fi  
    done
    gzip Resultat

  19. #19
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Il faut mettre #!/bin/bash s ur la 1ère ligne.

    pour copier le fichier à la suite dans le fichier Resultat il faut utiliser la redirection '>>':

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Mais j'ai un probléme par rapport à l'énoncé , est ce qu'il faut copier le contenu des fichier dans un même fichier c bien sa ?

    Sujet :
    Écrire un shellscript qui parcourt un répertoire donné en argument et ses sous-répertoires et recopie tous les fichiers qui le composent dans un même fichier que l'on pourra compresser grâce à gzip. Attention, les commandes find et tar sont proscrites.
    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
    #!/bin/bash 
    touch Resultat
    for i in "$1"/*
    do 
       if test -f $i
       then 
          cat $i>>Resultat
          echo 'les fichiers ont été copier avec succès'
          if test -d $i
          then 
             $0 $i
          fi
       fi
    done
    gzip -f Resultat

Discussions similaires

  1. Thread qui parcourt une base de données et extrait un champ
    Par Mednet dans le forum Général Java
    Réponses: 3
    Dernier message: 03/04/2013, 19h03
  2. [Sybase] curseur qui parcourt mal ?
    Par Mathusalem dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/02/2007, 11h55
  3. Treeview genere a partir d'un repertoire donne
    Par fisico dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/04/2006, 15h55
  4. Script shell qui change le repertoire courant
    Par Estats dans le forum Linux
    Réponses: 4
    Dernier message: 17/11/2005, 14h17
  5. xslt qui parcourt deux sources xml
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 20/09/2005, 11h28

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