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 :

Trouver les fichiers contenant un mot précis et en fonction de leur extension


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 145
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut Trouver les fichiers contenant un mot précis et en fonction de leur extension
    Bonsoir,

    Quand je cherche une string dans un fichier texte de code (.c, .pas, .pp, etc.), je me mets dans le dossier qui va bien et j'utilise grep -ri "string-cherchée" * et en général ça me trouve ce que je cherche, mais ça analyse tous les fichiers de l'arborescence concernée : c'est long...
    D'un autre côté, je sais lister tous les fichiers de code contenus dans une arbo avec find -type f -iname '*.pas' -o -iname '*.pp'.

    Alors je m'étais dit que si j'envoyais la sortie du find dans le grep ça le ferait, mais je ne sais pas coder le passage de l'un à l'autre.
    J'ai honte mais je viens demander un peu d'aide, car l'idée c'est find -type f -iname '*.pas' -o -iname '*.pp' | grep -i $1 - mais ça ne fonctionne pas, hélas...

    Merci pour le coup de main,

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 665
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -iname '*.pas' -o -iname '*.pp' -exec grep -i "$1" {} +
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 145
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut
    Grand merci pour cette 1re approche, mais je vais te demander encore un effort : je me suis permis de rajouter -o -iname '*.txt' après les .pas et les .pp, et le script ne cherche que dans les .txt !

    Une idée complémentaire pour qu'il cherche aussi avec les autres extensions ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 665
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f \( -iname '*.pas' -o -iname '*.pp' -o -iname '*.txt' \) -exec grep -i "$1" {} +
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 145
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut
    Bonjour et bravo !

    Ça ne s'invente pas, des formules pareilles, bien joué !

    Excellente journée et encore merci,

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 145
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut
    Bonjour bonjour,

    je reviens sur cette histoire car il m'arrive une drôle de blagounette ce matin :

    à grands coups de cd je me déplace dans une arborescence et arrivé à l'endroit qui devrait être bon, je tape findinfiles SetBrushOrgEx qui me retourne une ligne désespérément vide.
    Ah !
    Parce que je sais que dans le sous-dossier win32 de l'arbo où je suis se trouve le fichier win32winapi.inc qui contient, entre autres, ça :
    Windows.SetBrushOrgEx(DestDC, 0, 0, nil);.

    Je m'attendais à ce que cette ligne soit remontée mais point nenni !

    Rappel : findinfiles.sh =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
     
    if [ -z "$1" ]; then echo "usage :" $0 "texte_à_chercher"; exit; fi
     
    find -type f \( -iname '*.pas' -o -iname '*.pp' -o -iname '*.inc' -o -iname '*.txt' -o -iname '*.sh' -o -iname '*.c' -o -iname '*.h' \) -exec grep -i "$1" {} +
    Autres tests, si ça peut aider (je précise que le fichier est fermé) :
    Rechercher "AlphaDC," (sans les doubles quotes) ne remonte rien alors que le fichier contient la ligne // ToDo: Initialize AlphaDC, AlphaObj and Blend.
    Rechercher "AlphaDC" sans la virgule donc, en remonte quelques uns mais rien concernant mon fichier.
    Rechercher Initialize en remonte plein mais encore rien concernant mon fichier !

    Alors je vais dans le dossier où est le fichier, je relance les recherches et ça ne remonte pas mieux, ou plutôt, ça remonte comme décrit ci-dessus

    Mais comment c'est possible ?
    Que faire ? Que modifier ? Je ne suis pas du tout spécialiste de grep, hélas...

    Annexes :
    Les commandes et les résultats :
    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
    /datas/nobackup/lazarus_1.8.rc1/lazarus/lcl/interfaces/win32# findinfiles initialize
    win32wsforms.pp:  // initialize all root windows with this message
    win32wsforms.pp:      MakeWParam(UIS_INITIALIZE, UISF_HIDEFOCUS or UISF_HIDEACCEL), 0)
    win32wsforms.pp:  // we are calling setbounds in TWinControl.Initialize
    win32int.pp:    { Initialize the API }
    win32wscomctrls.pp:procedure InitializePreferredStatusBarHeight;
    win32wscomctrls.pp:    InitializePreferredStatusBarHeight;
    win32proc.pp:  ComCtlVersion: Cardinal = 0; //initialized in Win32Extra
    win32proc.pp:  // initialize bitmapinfo structure
    win32extra.pas:procedure Initialize;
    win32extra.pas:  Initialize;
    win32wsdialogs.pp:    // Windows asks us to initialize dialog. At this moment controls are not
    win32wsdialogs.pp:    // new initializes the filename fields, because ansistring and widestring
    win32wsdialogs.pp:  //don''t use initialize "var", since that will be reset to nil at every callback
    win32wsdialogs.pp:    BFFM_INITIALIZED:
     
    /datas/nobackup/lazarus_1.8.rc1/lazarus/lcl/interfaces/win32# findinfiles AlphaDC,
     
    /datas/nobackup/lazarus_1.8.rc1/lazarus/lcl/interfaces/win32# findinfiles AlphaDC
    win32proc.pp:function IsAlphaDC(ADC: HDC): Boolean;
    win32proc.pp:function IsAlphaDC(ADC: HDC): Boolean;
    Extrait du fichier concerné :
    Nom : 4post.png
Affichages : 168
Taille : 10,0 Ko

    L'arbo, 3e colonne, mon fichier c'est l'avant-avant-dernier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /datas/nobackup/lazarus_1.8.rc1/lazarus/lcl/interfaces/win32# ls
    alllclintfunits.pas  win32defines.inc      win32object.inc       win32wschecklst.pp         win32wsfactory.pas
    interfaces.pp        win32def.pp           win32pagecontrol.inc  win32wscomctrls.pp         win32wsforms.pp
    issues.xml           win32extra.pas        win32proc.pp          win32wscontrols.pp         win32wsgrids.pp
    Makefile             win32int.pp           win32themes.pas       win32wscustomlistview.inc  win32wsimglist.pp
    Makefile.compiled    win32lclintfh.inc     win32trayicon.inc     win32wsdialogs.pp          win32wsmenus.pp
    Makefile.fpc         win32lclintf.inc      win32winapih.inc      win32wsextctrls.pp         win32wspairsplitter.pp
    README.txt           win32listslh.inc      win32winapi.inc       win32wsextdlgs.pp          win32wsspin.pp
    win32callback.inc    win32listsl.inc       win32wsbuttons.pp     win32wsextdlgs.rc          win32wsstdctrls.pp
    win32debug.pp        win32memostrings.inc  win32wscalendar.pp    win32wsextdlgs.res         win32wstoolwin.pp
    Tous les fichiers de cette liste ont les droits 664 et les mêmes owner & group.

    Merci de vos retours,

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    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 362
    Par défaut
    Bonjour,

    Déjà, 2 tests à faire:
    -Voir si le find retourne bien la liste des fichiers complète:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f \( -iname '*.pas' -o -iname '*.pp' -o -iname '*.inc' -o -iname '*.txt' -o -iname '*.sh' -o -iname '*.c' -o -iname '*.h' \)
    -Voir si un simple grep sur le fichier en question retourne bien la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -i "SetBrushOrgEx" win32winapi.inc

  8. #8
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 145
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut
    Merci de te préoccuper de moi, et avec des tests simples, en plus

    Citation Envoyé par disedorgue Voir le message
    -Voir si le find retourne bien la liste des fichiers complète:
    Oui.

    Citation Envoyé par disedorgue Voir le message
    -Voir si un simple grep sur le fichier en question retourne bien la ligne:
    et oui.

    Ensuite ?

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    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 362
    Par défaut
    ... tu peux nous fournir l'ordre d'affichage du find pour savoir si ton fichier est dans au début ou vers la fin, car là je sèche un peu...

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    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 103
    Par défaut
    Citation Envoyé par Jipété Voir le message
    l'idée c'est find -type f -iname '*.pas' -o -iname '*.pp' | grep -i $1 - mais ça ne fonctionne pas, hélas...
    Normal, car, dans ce code, "grep" fait une chercher parmi les noms des fichiers (qu'envoie "find" sur la "stdout") et non sur leur contenu!

    Évidemment, la bonne solution, c'est avec l'option "-exec" de "find".

    Néanmoins, tu y étais presque! Il suffisait d'jouter "xargs" pour transformer la sortie de "find" en arguments pour "grep":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -iname '*.pas' -o -iname '*.pp' | xargs grep -i "$1"
    Remarque: la solution avec "-exec" a l'avantage sur "xargs" de fonctionner aussi avec des fichiers dont le nom peut comporter des espaces, tabulations ou fins de ligne... ou alors il faut ruser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -iname '*.pas' -o -iname '*.pp' -print0 | xargs -0 grep -i "$1"
    EDIT:
    J'ai pourtant bien lu la proposition de N_BaH, mais je n'ai pas bien percuté...

    Comme il y a un -o (c'est-à-dire un "ou"), il faut faire attention, car les les autres options sont implicitement connectées par un "et"...
    De plus, au moins sous macos, il faut un chemin, comme ".", par exemple:
    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f \( -iname '*.pas' -o -iname '*.pp' \) | xargs grep -i "$1" # Sinon il va prendre les répertoires '*.pp'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f \( -iname '*.pas' -o -iname '*.pp' \) -print0 | xargs -0 grep -i "$1"

  11. #11
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par jack-ft Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -iname '*.pas' -o -iname '*.pp' -print0 | xargs -0 grep -i "$1"
    moi j'aime bien la solution à coups de xargs, simplement parce qu'il suffit de lui adjoindre l'option -n pour que le traitement soit parallélisé au lieu de se limiter à l'utilisation d'un seul CPU, pour peu qu'on ait beaucoup de fichiers et/ou besoin d'aller vite c'est très pratique...

  12. #12
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 145
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut
    Bonsoir,

    Bizarre bizarre, chez moi ça ne fonctionne pas alors que la ligne de N_BaH le fait tip-top
    Citation Envoyé par jack-ft Voir le message
    Remarque: la solution avec "-exec" a l'avantage sur "xargs" de fonctionner aussi avec des fichiers dont le nom peut comporter des espaces, tabulations ou fins de ligne... ou alors il faut ruser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -iname '*.pas' -o -iname '*.pp' -print0 | xargs -0 grep -i "$1"
    Me suis fait un script pour tester, et je vois bien que je n'ai qu'un retour... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     #!/bin/bash
     
    if [ -z "$1" ]; then echo "usage :" $0 "texte_à_chercher"; exit; fi
     
    echo avec N_BaH :
    find -type f \( -iname '*.pas' -o -iname '*.pp' -o -iname '*.txt' -o -iname '*.sh' \) -exec grep -i "$1" {} +
     
    echo avec jack-ft :
    find -type f -iname '*.pas' -o -iname '*.pp' -o -iname '*.txt' -o -iname '*.sh' -print0 | xargs -0 grep -i "$1"

    Citation Envoyé par BufferBob Voir le message
    moi j'aime bien la solution à coups de xargs, simplement parce qu'il suffit de lui adjoindre l'option -n pour que le traitement soit parallélisé au lieu de se limiter à l'utilisation d'un seul CPU, pour peu qu'on ait beaucoup de fichiers et/ou besoin d'aller vite c'est très pratique...
    Un ch'tit exemple ?, car je n'ai pas trouvé le "man" très causant sur ce coup-là...
    Merci,

  13. #13
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    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 362
    Par défaut
    Bonjour,

    Petite question, comme on est sous gnu, ceci ne fonctionnerait pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -r --include="*.pas" --include="*.pp" --include="*.txt" -i "chaine_recherchée"
    (Sur ma version de grep (2.20) , cela fonctionne)

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Petite question, comme on est sous gnu, ceci ne fonctionnerait pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -r --include="*.pas" --include="*.pp" --include="*.txt" -i "chaine_recherchée"
    Si si !

    Citation Envoyé par disedorgue Voir le message
    (Sur ma version de grep (2.20) , cela fonctionne)
    grep 2.12, Debian 7/32 bits, bash 4.2.37

  15. #15
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    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 103
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Bonsoir,

    Bizarre bizarre, chez moi ça ne fonctionne pas alors que la ligne de N_BaH le fait tip-top


    Me suis fait un script pour tester, et je vois bien que je n'ai qu'un retour... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
     
    if [ -z "$1" ]; then echo "usage :" $0 "texte_à_chercher"; exit; fi
     
    echo avec N_BaH :
    find -type f \( -iname '*.pas' -o -iname '*.pp' -o -iname '*.txt' -o -iname '*.sh' \) -exec grep -i "$1" {} +
     
    echo avec jack-ft :
    find -type f -iname '*.pas' -o -iname '*.pp' -o -iname '*.txt' -o -iname '*.sh' -print0 | xargs -0 grep -i "$1"
    J'ai corrigé ma proposition (pour la postérité) en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f \( -iname '*.pas' -o -iname '*.pp' \) -print0 | xargs -0 grep -i "$1"
    qui doit être équivalent à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -a \( -iname '*.pas' -o -iname '*.pp' \) -a -print0 | xargs -0 grep -i "$1"
    Dès qu'on a un "-o", il vaut mieux mettre des parenthèses au bon endroit...

    Est-ce que ça marche mieux?

  16. #16
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Un ch'tit exemple ?, car je n'ai pas trouvé le "man" très causant sur ce coup-là...
    j'ai marqué -n me suis planté, je pensais à -P ;p
    si t'as 4 cpus find / -print0 | xargs -0 -P4 grep truc, un thread par cpu ça va donc 4x plus vite

  17. #17
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 145
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 145
    Par défaut
    Salut les aminches,

    Citation Envoyé par jack-ft Voir le message
    Dès qu'on a un "-o", il vaut mieux mettre des parenthèses au bon endroit...

    Est-ce que ça marche mieux?
    Oh ben vi ! Mais je n'ai pas vu la différence avec tes deux "-a" rajoutés... C'est pour quoi faire au juste (pas trouvé dans man) ?

    Citation Envoyé par BufferBob Voir le message
    j'ai marqué -n me suis planté, je pensais à -P ;p
    si t'as 4 cpus find / -print0 | xargs -0 -P4 grep truc, un thread par cpu ça va donc 4x plus vite
    Vi, mais comme je ne sais même pas combien j'ai de procs ( ), j'ai utilisé --max-procs=0 (man :
    If max-procs is 0, xargs will run as many processes as possible at a time.
    ) et ça fonctionne aussi, grâce aux parenthèses de jack-ft.


    Maintenant, je veux pas faire mon ch13ur, mais esthétiquement (et au-delà de la notion de performances soulevée par BB), c'est la soluce de disedorgue qui serait la plus belle, dans la mesure où les lignes affichées se passent du "./" au début.
    Le but de la manip étant de faire un clic-droit sur un dossier puis "ouvrir dans un terminal" et appeler le script pour chercher, je sais bien que je suis dans ce dossier donc "./" au début ne me sert à rien et brouille la lecture des résultats.
    Mais bon, c'est juste cosmétique, ça

    Bon dimanche,

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 02/12/2013, 00h17
  2. Supprimer les fichiers contenant les mots "xxxxxx"
    Par toxyco dans le forum VBScript
    Réponses: 3
    Dernier message: 10/06/2010, 09h53
  3. lister les fichiers contenant le mot PRINT non précédé d'un dièse ?
    Par Ekimasu dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 03/03/2009, 12h12
  4. Trouver les fichiers contenant des annotations
    Par lahitsitely78 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 18/02/2009, 11h52
  5. Trouver les fichiers contenant un mot avec FINDSTR
    Par soazig dans le forum Windows XP
    Réponses: 4
    Dernier message: 26/04/2007, 14h29

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