Mon codenoms des fichiers et linenumbers pour les matches de chat et grep
$ *.php | grep google
Comment puis-je imprimer les noms de fichiers et linenumbers à côté de chaque match?
Mon codenoms des fichiers et linenumbers pour les matches de chat et grep
$ *.php | grep google
Comment puis-je imprimer les noms de fichiers et linenumbers à côté de chaque match?
grep google *.php
si vous voulez couvrir de nombreux 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)
Utilisez « man grep "pour voir d'autres fonctionnalités.
for i in $(ls *.php); do grep -n --with-filename "google" $i; done;
qui ne fonctionnera pas - le fichier d'entrée est "stdin" lorsque la commande est écrite de cette façon – Alnitak
Vous avez raison. Changé le code pour fonctionner. –
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
lui dit de faire des numéros de ligne, et le drapeau -H
dit à afficher le nom du fichier, même s'il y a fichier uniquement. Grep affichera par défaut les noms de fichiers si plusieurs fichiers sont recherchés, mais vous voulez probablement vous assurer que la sortie est cohérente, quel que soit le nombre de fichiers correspondants.
find . -name "*.php" -print | xargs grep -n "searchstring"
find ./*.php -exec grep -l 'google' {} \;
Cela obtient les noms de fichiers, mais pas les numéros de ligne, n'est-ce pas? –
grep -RH "google" *.php
S'il vous plaît jeter un oeil à ack à http://betterthangrep.com. L'équivalent en accusé de réception de ce que vous essayez est:
ack google --php
Ce dernier code trouve-t-il des sous-répertoires ou des répertoires maîtres? –
Vous avez besoin du nom car vous ne savez peut-être pas quel fichier il était - en particulier si c'est une mauvaise pause que xargs a regroupé les choses et qu'il ne restait plus qu'un seul fichier. –
N'oubliez pas que vous devez utiliser -print0 pour trouver et -0 à xargs si vous travaillez dans une arborescence de répertoires dont les noms contiennent des espaces comme des espaces blancs. –