2012-12-14 5 views

risposta

10

Supponendo di avere due log-files in:

  • C: /temp/my.log
  • C: /temp/alsoMy.log

cd C: e l'uso :

grep -r somethingtosearch temp/*.log 

che vi darà una lista come:

temp/my.log:somethingtosearch 
temp/alsoMy.log:somethingtosearch1 
temp/alsoMy.log:somethingtosearch2 
+0

Come posso ottenere il numero di riga del contenuto cercato? –

+0

@ Özzesh add -n per la segnalazione dei numeri di telefono – Schpaencoder

-1

Usa:

grep somethingtosearch *.log 

ei nomi di file verranno stampati lungo con le partite.

15

Hai provato a utilizzare il flag -l?

grep -l somethingtosearch 

Ciò restituirà solo i percorsi ei nomi dei file in cui è stata trovata la ricerca, non l'intero linee in cui è stata fatta la partita.

Utilizzare con flag -r per la ricorsione.

+8

grep -l solo dare il nome del file non è completo percorso – Kapil

1

per me
grep -b "searchsomething" * .LOG lavorato come avrei voluto

+1

Non si tratta di ciò che si desidera, ma di ciò che l'OP vuole. – a20

5

Se volete vedere i percorsi completi, mi sento di raccomandare a cd nella directory principale (del drive se si utilizza Windows)

cd C:\ 
grep -r somethingtosearch C:\Users\Ozzesh\temp 

O su Linux:

cd/
grep -r somethingtosearch ~/temp 

se si resiste davvero al filtraggio del nome del file (*.LOG) e si desidera recursive (file non sono tutti nella stessa directory), che unisce find e grep è il modo più flessibile:

cd/
find ~/temp -iname '*.log' -type f -exec grep somethingtosearch '{}' \; 
1

Il modo più semplice per stampare i percorsi completi è sostituire percorso relativo inizio con il percorso assoluto:

grep -r --include="*.sh" "pattern" ${PWD} 
1

comando:

grep -rl --include="*.js" "searchString" ${PWD} 

uscita restituito:

012.
/root/test/bas.js 
1

Sono caduto qui quando cercavo esattamente lo stesso problema e forse può aiutare gli altri.

Penso che la vera soluzione è:

cat *.log | grep -H somethingtosearch 
Problemi correlati