I nomi dei file e LINENUMBERS per le partite del gatto e grep
Domanda
Il mio codice
$ *.php | grep google
Come posso stampare i nomi di file e LINENUMBERS accanto ad ogni partita?
Soluzione
grep google *.php
se si vuole abbracciare molte directory:
find . -name \*.php -print0 | xargs -0 grep -n -H google
(come spiegato nei commenti, -H è utile se xargs esce con un solo file rimanenti)
Altri suggerimenti
Non si dovrebbe fare
$ *.php | grep
Ciò significa "eseguire il primo programma PHP, con il nome del resto wildcarded come parametri, e quindi eseguire grep sull'uscita".
Dovrebbe essere:
$ grep -n -H "google" *.php
Il flag -n
dice di fare i numeri di riga, e la bandiera -H
dice di visualizzare il nome del file, anche se c'è solo file. Grep imposterà a mostrare i nomi dei file se non ci sono più file da cercare, ma probabilmente si desidera assicurarsi che l'uscita è coerente indipendentemente dal numero di file corrispondenti ci sono.
grep -RH "google" *.php
Si prega di dare un'occhiata a ack a http://betterthangrep.com . L'equivalente in ack di quello che stai cercando è:
ack google --php
find ./*.php -exec grep -l 'google' {} \;
Con "l'uomo grep" per vedere le altre caratteristiche.
for i in $(ls *.php); do grep -n --with-filename "google" $i; done;
find . -name "*.php" -print | xargs grep -n "searchstring"