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 :

Contrôle sur le fichier à recuperer


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
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut Contrôle sur le fichier à recuperer
    Salut à tous,

    J’écris un programme shell qui doit se comporter comme suit: j'ai un répertoire dans lequel je stock des fichiers .xml et .csv. Chaque fichier xml comporte un fichier .csv. je veux récupérer les fichiers .xml du jour mais m'assurer que leur .csv existe bel et bien. Par exemple si je veux récupérer le fichier 1111.xml, je dois verifier que le .csv existe c'est à dire 1111.csv.

    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
     
    #!/bin/ksh
     
    set -x 
     
    cd reception
     
     
       echo "open xxx.xxx.xxx.xxx"       > param5
       echo "user xxxxx xxxxx" >> param5 
       echo "cd arrive "                >> param5
     
       liste_file_xml='*.xml'
       liste_file_csv='*.csv'
     
    if [ ! -f $liste_file_xml ]
    then
        echo "Aucun fichier xml present dans le repertoire"
        exit
    else
     
        fgrep -f $liste_file_xml  $liste_file_csv > bonfichier
     
    	for fic in  bonfichier
          do
            echo "mget *.xml"                  >> param5*
    		echo "mget *.csv"                  >> param5
          done
    fi;
            echo "bye"                         >> param5
            ftp -i -n < param5
    Mon souci c'est que je ne suis pas trop sûr de la méthode que je veux utiliser ensuite avec la fonction fgrep -f je n'arrive pas à ignorer les extensions lors de la comparaison. Alors si quelqu'un a une meilleure idée je suis disponible.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 676
    Par défaut

    Je ne comprends pas comment vous (toi et d'autres, car ce n'est pas rare) faites pour écrire des "scripts" sans en avoir tester la moindre commande dans un terminal.


    à part ça, pourquoi ksh ? plutôt que sh, ou bash ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

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

    Je n'ai pas lu le script qui m'a l'air de toute façon trop compliqué. On fait cela en une ligne avec bash.
    On utilise "find" pour dresser la liste des csv, puis la liste des xml, on enlève les extensions avec "sed", on trie avec "sort" et on utilise "comm" pour savoir quel fichier n'est pas commun à csv et xml.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 676
    Par défaut
    On utilise "find" pour dresser la liste des csv, puis la liste des xml, on enlève les extensions avec "sed", on trie avec "sort" et on utilise "comm" pour savoir quel fichier n'est pas commun à csv et xml.
    et encore...! ça c'est parce que t'aimes fumer*

    une bête boucle for sur les fichiers xml, un remplacement de paramètres pour enlever l'extension, et la remplacer par csv, dans un test d'existence de fichier, et hop !

    --
    *rapport aux pipes
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut
    Salut à tous,

    merci pour vos messages

    problème résolu :

    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
     
    #!/bin/ksh
     
    xml=`ls -1 *.xml`
    cks=`ls -1 *.csv`
     
    for fichier1 in $xml
    do
        ficxml=`$(basename $fichier1 .${fichier1##*.})`
        echo $ficxml >> $fichierxml
    done
     
    for fichier2 in $csv
    do
      ficcks=`$(basename $fichier2 .${fichier2##*.})`
        echo $ficcsv >> $fichiercks
    done
     
    fgrep -f $fichierxml  $fichiercsv > $bonfichier
     
    fic = `cat $bonfichier`
     
    if [ -z $fic ]
    then
        echo "Aucun fichier traite"
        exit
    else
    for t in $fic
    do
       cp $t.xml sauve/
       cp $t.csv sauve/
    done
    fi;
     
    echo > $fichierxml
    echo > $fichiercsv

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 676
    Par défaut
    problème résolu :
    ça m'étonnerais !
    au vu des erreurs de syntaxe, des variables non renseignées, l'algo oiseux, le script devrait planter.

    et puis ON N'UTILISE PAS ls DANS UN SCRIPT !!!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [Upload] Contrôle sur nom Fichier
    Par Katachana dans le forum Langage
    Réponses: 1
    Dernier message: 28/03/2008, 10h35
  2. [BASH] boucle for sur des fichiers, recuperation du chemin ?
    Par zevince dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 13/11/2007, 10h47
  3. recuperation des données sur un fichier excel
    Par ghyosmik dans le forum Excel
    Réponses: 2
    Dernier message: 19/09/2007, 11h26
  4. recuperation de quelque ligne sur un fichier séquenciel
    Par scofild20 dans le forum Général VBA
    Réponses: 2
    Dernier message: 07/08/2007, 13h09
  5. Réponses: 8
    Dernier message: 13/07/2006, 01h17

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