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éer un script qui va lire tous les dossiers et appliquer une commande


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut Créer un script qui va lire tous les dossiers et appliquer une commande
    Bonjour à tous,

    J'ai créé une petite application web.
    Le contenus sont des fichier Markdown que je converti en html avec la commande suivante, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pandoc -s --self-contained -A /var/www/html/sys/md/footer.html --toc --toc-depth=3 -c /var/www/html/sys/md/markdown-pandoc.css -o install-ubuntu-18-04.html install-ubuntu-18-04.md
    Ce repertoire web a plusieurs dossiers et je n'aimerais pas naviguer jusqu'au fichier.md pour lancer la commande de dessus, en modifiant le fichier à convertir.

    L'idée est de créer dans /home/user/.bashrc un ligne qui lorsque je tape la commande md, il va lancer une commander qui va parcourir tous les dossiers enfant et lorsqu'il rencontre un fichier avec l'extention md, il va le convertir en html en concervant le même non de fichier. Evidemment, le fichier convertir doit se trouver dans le même dossier

    Par exemple, dans mon fichier .bashrc, je pourrais créer ceci:
    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function c() { 
        #cd $* && ls 
    }

    mais je ne sais pas comment remplacer ce que je j'ai commenté pour
    1. Il parcour tous les dossiers enfant à /var/www/html/wiki
    2. S'il rencontre un fichier avec l'extension .md, il applique la commande pandoc sur ce(s) fichier(s)
    3. La conversion du fichier doit se trouver au même niveau


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pandoc -s --self-contained -A /var/www/html/sys/md/footer.html --toc --toc-depth=3 -c /var/www/html/sys/md/markdown-pandoc.css -o le-fichier-lu.html le-fichier-lu.md
    Ainsi, je n'aurai qu'à ouvrir mon terminal et taper la commande 'md' et tous les kfichiers .md seront convertis en une fois..


    Voyez-vous?
    Je vous remercie

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Dans des notes, j'ai trouvé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function md(){
            for d in /var/www/html/Wiki/;
            do echo $d;
            sudo find $d -type f -name "*.md";
            done;
    }
    Ce qui me liste bien tous les fichiers avec l'extention .md, quand je tape md dans mon terminal

    Mais alors comment récupérer le nom du fichier (je pense avant le ;done)
    pour faire la conversion??

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

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

    la boucle [c]for[c] est inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -options... -execdir pandoc... {} \;
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Hello
    Merci pour ta réponse, mais je ne vois toujours pas comment, je peux récupérer le nom de fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo find /var/www/html/Wiki/ -type f -name "*.md" -execdir pandoc -s --self-contained -A /var/www/html/sys/md/footer.html --toc --toc-depth=3 -c /var/www/html/sys/md/markdown-pandoc.css -o $file.html $file.md;
    J'imagine que le $file, ne fonctionnera pas

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    -print cf. man find.
    voire -printf si tu ne veux pas que le chemin soit affiché
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo find /var/www/html/Wiki/ -type f -name "*.md" -execdir pandoc -s --self-contained -A /var/www/html/sys/md/footer.html --toc --toc-depth=3 -c /var/www/html/sys/md/markdown-pandoc.css -o $file.html $file.md;
    J'imagine que le $file, ne fonctionnera pas
    Effectivement, pour faire simple, le fichier trouvé par "find" est référencé par {}, comme indiqué dans le message de N_BaH.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Bonjour.

    D'accord, mais actuellement, j'affiche ceci par exemple
    /var/www/html/Wiki/IT-help.md
    donc {} va m'afficher
    /var/www/html/Wiki/IT-help.md
    ou ceci
    mais alors comment remplacer .md par .html dans ma commande pandoc, dans cette partie:

    (je sais pas trop comment écrire cette partie)

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/03/2018, 11h42
  2. Réponses: 8
    Dernier message: 16/03/2007, 16h43
  3. Réponses: 4
    Dernier message: 13/02/2007, 16h23
  4. Comment créer un champs qui additionne
    Par Didi17 dans le forum Access
    Réponses: 2
    Dernier message: 16/10/2005, 18h51
  5. Comment créer un script?
    Par sitdown dans le forum Windows
    Réponses: 1
    Dernier message: 25/08/2005, 10h05

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