Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

compter le nombre de fichier texte contenant...

5 réponses
Avatar
Mikael
Bonjour,

Je cherche à compter le nombre de fichier de sessions php contenant une
chaine 'candidat' et je sèche sur ce problème.

Auriez vous une suggestion ?

Merci d'avance,

Mikael

5 réponses

Avatar
Stephane Chazelas
2006-03-01, 09:25(+01), Mikael:
Bonjour,

Je cherche à compter le nombre de fichier de sessions php contenant une
chaine 'candidat' et je sèche sur ce problème.
[...]


find .//. -name '*.php' -type f -exec grep -Fl candidat {} + |
grep -c //

--
Stéphane

Avatar
Mikael
Bonjour,

Je cherche à compter le nombre de fichier de sessions php contenant une
chaine 'candidat' et je sèche sur ce problème.


J'ai trouvé.

find . -type f -exec grep -c candidat {} ; | awk '{ total += $1} END
{print total; }'

Mikael

Avatar
Stephane Chazelas
2006-03-01, 09:37(+01), Mikael:
Bonjour,

Je cherche à compter le nombre de fichier de sessions php contenant une
chaine 'candidat' et je sèche sur ce problème.


J'ai trouvé.

find . -type f -exec grep -c candidat {} ; | awk '{ total += $1} END
{print total; }'
[...]


Ah, tu cherchais le nombre lignes contenant "candidat"

find . -type f -exec cat {} + | grep -c candidat

ca evitera de lancer un grep par fichier.

Si tu cherchais le nombre d'occurrences de "candidat", tu
pourrais faire:

find . -type f -exec cat {} + | awk '
{n += gsub(/candidat/, "")}
END {print n+0}'

(Si un fichier se termine par "can" (sans saut de ligne) et le
suivant commence par "didat" par exemple, tu peux avoir un
resultat erronné)

--
Stéphane


Avatar
Stephane Dupille
Bonjour,



Salut !

Je cherche à compter le nombre de fichier de sessions php contenant une
chaine 'candidat' et je sèche sur ce problème.
find .//. -name '*.php' -type f -exec grep -Fl candidat {} + |

grep -c //


Pourquoi les slashs dans le find dans './/.' ?

Et je crois que mon find (FreeBSD 4) ne comprends pas la syntaxe de
d'exec avec le +.

Sinon, je proposerais :
find . -name '*.php' -print | xargs grep -l candidat | wc -l

--
Salut,Je m'appele sed.je suis etudiant en communication, j'ai lu votre
message.je viens vous dire un petiit bonjour,et vous laisser mon adresse
mél: vous pouvez me repondre maintenant si vous étez conecter.
-+-<http://www.le-gnu.net> - La com', elle ne passera pas par moi -+-


Avatar
Stephane Chazelas
On Wed, 01 Mar 2006 10:03:24 +0100, Stephane Dupille wrote:
Bonjour,



Salut !

Je cherche à compter le nombre de fichier de sessions php contenant une
chaine 'candidat' et je sèche sur ce problème.
find .//. -name '*.php' -type f -exec grep -Fl candidat {} + |

grep -c //


Pourquoi les slashs dans le find dans './/.' ?


Je ne veux compter les fichiers qu'une fois, donc ne compter que
ce que je suis sur de trouver une fois par fichier. Si je compte
les lignes, je vais compter plusieurs fois les fichiers qui
contiennent des sauts de ligne.

Et je crois que mon find (FreeBSD 4) ne comprends pas la syntaxe de
d'exec avec le +.


Un find POSIX ou Unix doit l'avoir. J'imagine que la derniere
version de FreeBSD doit l'avoir. Je crois que la Single Unix
Specification version 2 ne l'avait pas, SUSv3 l'a. C'est
peut-etre dans POSIX depuis des decennies, mais comme il n'etait
pas publique avant qu'il merge avec SUS, qui sait...

Sinon, je proposerais :
find . -name '*.php' -print | xargs grep -l candidat | wc -l


La, non seulement, ca ne marche pas avec les fichiers qui
contiennent des newlines, mais aussi avec ceux qui contiennent
des espaces, tabulations, simple quotes, doubles quotes et
backslashs. xargs attend un format bien particulier d'input, le
format d'output de find n'est pas compatible (a moins d'utiliser
-print0/-0 mais ce n'est pas standard (GNU et BSD only)).

--
Stephane