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

Linux Discussion :

Syntaxe du find -exec if !


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 33
    Par défaut Syntaxe du find -exec if !
    Bonjour,


    J'ai un soucis avec le find -exec if ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for ligne in $(cat $dossierMigration/fichierPhp.txt)
    do
    	find . -name "*.php" -exec if [ "{}" = "$ligne" ] ; then echo "{}" fi  \;
    done
    Il me renvoie l'erreur "Syntax error near unexpected token "then".
    J'ai tenté de mettre des points virgules de tous les côtés, mais rien n'y fait, j'ai toujours des erreurs. Je me demande quelle est la bonne syntaxe.

    Merci d'avance.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par flyxter Voir le message
    Bonjour,


    J'ai un soucis avec le find -exec if ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for ligne in $(cat $dossierMigration/fichierPhp.txt)
    do
    	find . -name "*.php" -exec if [ "{}" = "$ligne" ] ; then echo "{}" fi  \;
    done
    Il me renvoie l'erreur "Syntax error near unexpected token "then".
    J'ai tenté de mettre des points virgules de tous les côtés, mais rien n'y fait, j'ai toujours des erreurs. Je me demande quelle est la bonne syntaxe.

    Merci d'avance.
    Tu peux utiliser la syntaxe test && echo mais avant tout, je suis dubitatif. Tu demandes tous les fichiers php mais tu n'affiches que celui qui correspond à $ligne. Autant demander directement le fichier $ligne

    find . -name "$ligne" -print
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 33
    Par défaut
    Nan en fait, j'explique, j'ai une liste de fichiers php et fichiers php3.
    Certains ont le même nom.
    Le but est de stocker les fichiers php. Ensuite pour chaque fichier php, je parcours la liste des fichiers php3, si le fichier php3 a le même nom que le fichier php, je prend le contenu du fichier php3, et je l'insère dans le fichier php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    find . -name "*.php" -print > $dossierMigration/fichierPhp.txt
    for ligne in $(cat $dossierMigration/fichierPhp.txt)
    do
    	find . -name "*.php3" if [ "e" = "e" ] ; then -exec echo "{}" fi \;
    done
     
    # J'insère ces 2 lignes suivantes dans le if à la place du echo.
    # Cependant, pour cela, il faut que je n'ai pas d'erreur.
    echo "\n" >> {}
    cat $ligne >> {}

  4. #4
    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,

    les fichiers sont-ils dans un seul répertoire (./), ou dans plusieurs répertoires sous ./ ?
    les .php et .php3 qui ont le même nom sont-ils dans le même répertoire ?

    pour info : if fait partie de la syntaxe du shell, pas de find !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 33
    Par défaut
    J'ai réussi à contourner le problème du if !
    Voici ce que ça donne pour ceux qui auraient le même problème que moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    find -type f -name "*.php" -print | while read fichierPhp
    do
    	repertoire=`dirname "$fichierPhp"`
    	fic=`basename $fichierPhp`
    	find "$repertoire" -type f -name "${fic%.php}.php3" -print | while read fichierPhp3
    	do
    		cat $fichierPhp3 >> $fichierPhp
    		rm -f "$fichierPhp3";
    	done
    done

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
     
    exec 3< <(find . -type f -name "*php" -print)
     
    while read -u3 line
    do filename="${line##*/}"
       find . -type f -name "${filename%.*}.php3" \
              -exec bash -c 'echo "$(<$1)" >> "$2"' _ {} "$line" \;
    done
    !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. find -exec et fonction
    Par benoitor dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 13/10/2011, 10h22
  2. commande find -exec fonction ?
    Par slig_80 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 03/12/2010, 01h39
  3. utilisation de {} dans find -exec et commandes imbriquées
    Par pitipoisson dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 07/09/2009, 11h56
  4. at, nohup, find -exec et gcc
    Par dot-_-net dans le forum Ubuntu
    Réponses: 2
    Dernier message: 18/04/2008, 11h55
  5. Syntaxe objet FIND via ADO
    Par PhilC dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/09/2006, 16h31

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