Los nombres de archivo y LINENUMBERS para los partidos de gato y grep
Pregunta
Mi código
$ *.php | grep google
¿Cómo puedo imprimir los nombres de archivo y LINENUMBERS junto a cada partido?
Solución
grep google *.php
si quiere abarcar muchos directorios:
find . -name \*.php -print0 | xargs -0 grep -n -H google
(como se explica en los comentarios, -H es útil si xargs sube con sólo un archivo restante)
Otros consejos
No se debe hacer
$ *.php | grep
Esto significa "ejecutar el primer programa PHP, con el nombre del resto comodín como parámetros, y luego ejecutar grep en la salida".
Debe ser:
$ grep -n -H "google" *.php
La bandera -n
dice que haga números de línea, y la bandera -H
le indica que debe mostrar el nombre del archivo, incluso si sólo hay archivo. Grep predefinida que muestra los nombres de archivo si hay varios archivos que se busca, pero es probable que quieren asegurarse de que la salida es constante independientemente del número de archivos coincidentes existen.
grep -RH "google" *.php
Por favor, eche un vistazo a ACK en http://betterthangrep.com . El equivalente en el acuse de recibo de lo que estamos tratando es:
ack google --php
find ./*.php -exec grep -l 'google' {} \;
Utilice "grep" para ver otras características.
for i in $(ls *.php); do grep -n --with-filename "google" $i; done;
find . -name "*.php" -print | xargs grep -n "searchstring"