Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/01/2021, à 15:05

DonutMan75

[RESOLU] find/exec/grep me rend chèvre....

Bonjour à tous,
pour chaque fichier txt de mon répertoire, je souhaite extraire la ligne qui contient "P".
Je ne comprends pas pourquoi mon find ne fonctionne pas... C'est pourtant la même commande atomique que je trouve un peu partout sur le net...

$ echo "P :0" > a.txt
$ echo "P :0" > b.txt
$ echo "P :1" > c.txt
$ find . -type f -name "*txt" -exec grep "P" {} \;
find: paramètre manquant pour « -exec »

Vous avez une idée ?

Merci d'avance,

D.

Dernière modification par DonutMan75 (Le 19/01/2021, à 15:43)

Hors ligne

#2 Le 19/01/2021, à 15:14

DonutMan75

Re : [RESOLU] find/exec/grep me rend chèvre....

Bon après avoir retapé intégralement la commande j'ai réussi à la faire passer...

La commande qui foire s'appelle fko, celle qui marche fok :

$ fko="find . -type f -name "*txt" -exec grep "P" {} \;"
$ fok="find . -type f -name "*txt" -exec grep "P" {} \;"
$ echo "$fko" | od -a
0000000   f   i   n   d  sp   .  sp   -   t   y   p   e  sp   f  sp   -
0000020   n   a   m   e  sp   *   t   x   t  sp   -   e   x   e   c  sp
0000040   g   r   e   p  sp   P  sp   {   }   B  sp   \   ;  nl
0000056
$ echo "$fok" | od -a
0000000   f   i   n   d  sp   .  sp   -   t   y   p   e  sp   f  sp   -
0000020   n   a   m   e  sp   *   t   x   t  sp   -   e   x   e   c  sp
0000040   g   r   e   p  sp   P  sp   {   }  sp   \   ;  nl

Juste après {}, vous voyez le mystérieux caractère B dans fko ??? Aucune idée de comment il s'est retrouvé là et il ne s'affiche pas non plus :

$ echo $fko
find . -type f -name a.txt b.txt c.txt -exec grep P {} \;
$ echo $fok
find . -type f -name a.txt b.txt c.txt -exec grep P {} \;


$ [ "$fko" == "$fko" ] && echo "EGAUX" || echo "DIFF"
EGAUX
$ [ "$fko" == "$fok" ] && echo "EGAUX" || echo "DIFF"
DIFF

Si quelqu'un a une idée de ce qu'il s'est passé ?

D.

Hors ligne

#3 Le 19/01/2021, à 15:43

DonutMan75

Re : [RESOLU] find/exec/grep me rend chèvre....

Ok, j'ai eu la révélation en retapant la commande !!!
Pour faire les symboles '{' et '}' je dois maintenir la touche AltGr sur mon clavier.
Lorsque j'ai ensuite tapé la touche espace (pour faire un espace entre '{}' et '\;'), j'ai du laisser la toucher AltGr enfoncée par mégarde et ça m'a créé (je crois) une espace insécable.
Voir par exemple ici : https://stackoverflow.com/questions/313 … altgrspace

Maintenant pourquoi ça affiche 'B' avec od c'est une autre histoire ça...

D.

Hors ligne

#4 Le 19/01/2021, à 16:08

pingouinux

Re : [RESOLU] find/exec/grep me rend chèvre....

Bonjour,

DonuMan75 #3 a écrit :

Maintenant pourquoi ça affiche 'B' avec od c'est une autre histoire ça...

Si tu veux voir les différences, fais plutôt :

hd <<<"$fko"
echo
hd <<<"$fok"

Hors ligne

#5 Le 19/01/2021, à 16:25

pingouinux

Re : [RESOLU] find/exec/grep me rend chèvre....

man od a écrit :

       -a     same as -t a,  select named characters, ignoring high-order bit

Voici comment est encodé le "NO-BREAK SPACE"

  => <U00A0>     /xc2/xa0     NO-BREAK SPACE

Si tu enleves le bit le plus élevé de c2 et a0, tu obtiens respectivement 42 et 20, encodages de B et de l'espace.

Ajouté :
Shift+AltGr+Space => NO-BREAK SPACE

Dernière modification par pingouinux (Le 19/01/2021, à 16:28)

Hors ligne

#6 Le 19/01/2021, à 17:33

kamaris

Re : [RESOLU] find/exec/grep me rend chèvre....

Ça ne répond pas à ta question de départ, mais bon, tu devrais plutôt faire

grep 'P' *txt

Hors ligne

#7 Le 19/01/2021, à 19:42

DonutMan75

Re : [RESOLU] find/exec/grep me rend chèvre....

Hello à vous,
pingouinux, merci pour tes éclaircissements ! Je suis allé un peu vite avec od....
kamaris, je suis bien d'accord avec toi... hélas dans le cas réel d'exécution de la commande (i.e. pas le cas "simplifié" avec a.txt b.txt et c.txt), j'ai *tellement* de fichiers .txt dans le répertoire que la commande explose en vol...

Bonne soirée à tous smile

D.

Hors ligne

#8 Le 19/01/2021, à 19:52

kamaris

Re : [RESOLU] find/exec/grep me rend chèvre....

Alors essaie

find . -type f -name "*txt" -exec grep "P" {} +

Hors ligne