Commande grep

Fermé
sapne Messages postés 1 Date d'inscription dimanche 5 février 2006 Statut Membre Dernière intervention 5 février 2006 - 5 févr. 2006 à 00:15
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 5 févr. 2006 à 09:39
bonsoir.J'ai dans mon répertoire d'accueil plusieurs fichiers dont l'ectension est .c, lorsque je tape la commade ls | grep *.c , elle ne m'affiche qu'un seul fichier parmi ceux qui ont cete extension.Pour d'autres extensions y a meme pas un seul résultat.Quel est le probleme svp?

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 févr. 2006 à 08:39
Salut,

ls | grep *.c

grep utilise des expressions régulières. Ce que tu essaies c'est la variante caractères générique comme on utilise sous win quand on cherche des fichiers.

Si je traduit ta commande c'est : liste moi les fichiers de ce répertoire et ensuite choisi que les fichiers qui ont le motif le caractère * ensuite n'importe quel caractère (.) mais un seul fois et avec un c après.

En fait tu vois que grep ne sais pas lire grand chose.
Il pourrait trouver des choses comme *bc ou *hcd ou a*hcf et même mon_f*ichier.c

Pour trouver tes fichiers qui ont l'extension .c la commande find est suffisante

find /rep -name '*.c'

en ce cas la globalisation type windows fonctionne


pour grep ça sera

ls | grep '.*\.c'

Qui veut dire : liste les fichiers ensuite affiche seulement les fichiers qui on le motif ( n'importe quel caractère zéro fois, une fois ou plus suit d'un caractère point (.) et qui contient un c après le point.

Mais dans ce cas la commande grep va trouver aussi a.cc donc on va la modifier

ls | grep '.*\.c$'
Dans ce cas le motif demande une chaine qui se fini avec le caractère poin suit dans c



Utilise plutôt find en ce cas
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
5 févr. 2006 à 09:25
Salut,

Un simple :

ls *.c

devrait suffire dans ce cas précis. Pour une liste en colonne, rajoute "-1" à "ls" :

ls -1 *.c
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
5 févr. 2006 à 09:31
Salut,

bien vu.

On doit choisir la méthode la plus simple.

Bonne journée.


lami20j

P.S. Mon intention c'était de le faire un peu comprendre la différance entre une simple globalisation et une regex
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
5 févr. 2006 à 09:39
Salut,

Mon intention c'était de le faire un peu comprendre la différance entre une simple globalisation et une regex
J'avais bien compris (et c'est tout en ton "honneur"), mais les "regex" au début c'est "prise de tête en tout genre".

Bonne journée à toi aussi et aux z'autres bien entendu ;-))
0