Et pour les noms de fichiers linenumbers les matchs de chat et grep
Question
Mon code
$ *.php | grep google
Comment puis-je imprimer les noms de fichiers et linenumbers à côté de chaque match?
La solution
grep google *.php
si vous voulez couvrir plusieurs répertoires:
find . -name \*.php -print0 | xargs -0 grep -n -H google
(comme expliqué dans les commentaires, -H est utile si xargs arrive avec un seul fichier restant)
Autres conseils
Vous ne devriez pas faire
$ *.php | grep
Cela signifie « exécuter le premier programme de PHP, avec le nom du reste des caractères génériques en tant que paramètres, puis exécutez grep sur la sortie ».
Il devrait être:
$ grep -n -H "google" *.php
Le drapeau -n
dit à faire des numéros de ligne, et le drapeau de -H
il indique pour afficher le nom du fichier, même s'il y a fichier uniquement. Grep par défaut pour montrer les noms de fichiers s'il y a plusieurs fichiers sont fouillés, mais vous voulez probablement vous assurer que la sortie est constante quel que soit le nombre de fichiers correspondant il y a.
grep -RH "google" *.php
S'il vous plaît jeter un oeil à ack http://betterthangrep.com . L'équivalent en ack de ce que vous essayez est:
ack google --php
find ./*.php -exec grep -l 'google' {} \;
Utilisez "man grep" pour voir d'autres caractéristiques.
for i in $(ls *.php); do grep -n --with-filename "google" $i; done;
find . -name "*.php" -print | xargs grep -n "searchstring"