Parser un fichier csv en bash

Résolu
Bonjour,
Comment puis-je scripter en shell ceci :

find . ! -regex ".*/\..*" -name "monoccurence.xml" -print -exec cp {} ~/Desktop/monrep \;


...en partant du principe que "monoccurence" sera lu dans un fichier csv de plusieurs lignes.
J'ai essayé ça mais :

#!/bin/sh
while IFS=';' read monoccurrence
do line="$monoccurrence"
   find . ! -regex ".*/\..*" -name "$monoccurrence" | cp {} ~/Desktop/monrep \;
done < fichiersource.csv


Le parsing marche mais pas la copie de fichier...
Un petit coup de pouce ne serait pas de refus !

Merci à vous.

Max

3 réponses

  1. Merci zep31.
    Le echo m'a permis de voir que le script dans sa version 1 marchait en réalité.
    Merci encore pour votre aide.
    1. Merci pour ta réponse zipe31.

      J'ai tenté de chaîner l'action de copier les fichiers avec un pipe.
      En effet j'ai d'abord testé ça :

      #!/bin/sh
      while IFS=';' read monoccurrence
      do line="$monoccurrence"
         find . ! -regex ".*/\..*" -name "$line" -print -exec cp {} ~/Desktop/monrep 
      done < fichiersource.csv
      


      Mais ça ne marche pas...
      Le csv est composé d'un nom de fichier par ligne (toto.xml, titi.xml, tata.xml, etc.)
      Mon script arrive bien à parser mon fichier csv et à trouver un fichier, mais je n'arrive pas exécuter la commande suivante, à savoir copier le fichier trouvé dans mon répertoire local.
      1. Contributeur
        Essaie de rajouter un echo devant la commande "cp" afin de voir ce qui pourrait clocher ;-\
        #!/bin/sh
        while IFS=';' read monoccurrence
        do line="$monoccurrence"
           find . ! -regex ".*/\..*" -name "$line" -print -exec echo "cp {} ~/Desktop/monrep"
        done < fichiersource.csv

        Je me répète : A quoi sert le 'line="$monoccurrence"' ?
      2. Contributeur
        hello
        il manque un
        \;
        à la fin du find,non ?
      3. Contributeur
        Rhâ le boulet que je fais ;-((

        Merci dubcek ;-))
    2. Contributeur
      Salut,

      Pourquoi tes deux commandes diffèrent ? (le pipe dans la seconde)

      A quoi sert le 'line="$monoccurrence"' ?
      1. Contributeur
        J'avais oublié... à quoi ressembles les entrées dans le fichier "fichiersource.csv" ?

    Discussions similaires

    question pix mot caché

    7 réponses