Come si cerca un testo specifico in tipi di file specifici? [duplicare]


13

Possibile duplicato:
come posso grep nei file di origine per un po 'di testo?

Qual è il comando per cercare testo specifico in tipi di file specifici, ricorsivamente, nella directory corrente?


Cosa vuoi restituito? la linea su cui si trova il testo? il nome del file in cui si trova il testo?
MaQleod,

@MaQleod: Sarebbe buono (nome file + lino + frammento), se possibile.
Phillip,

@slhck: ack-grep non è installato; Non ho i permessi per installarlo.
Phillip,

1
Non avresti bisogno ack-grep, puoi usare gli esempi nella domanda come un inizio (proprio come ho detto), cioè le find | xargs | greplinee. Per l'output specifico, man grepè sempre utile leggere.
slhck,

@slhck: Grazie, così ho fatto grep -r --include=*.<type> "<string>" ., che ha funzionato. Sfortunatamente, la pagina man non è molto semplice nel menzionare il punto finale.
Phillip,

Risposte:


11
find . -type f -name '*.extension' | xargs grep "string"

Questo comando esegue find sulla directory locale (.) Per tutti i file con nomi corrispondenti al modello * .extension, quindi esegue grep per "stringa" sui risultati della ricerca . Si noti che find è intrinsecamente ricorsivo. Finché puoi differenziare i file che desideri dai file che non ti basano sul nome, questo dovrebbe funzionare per te.


2
Questo si interrompe con nomi di file contenenti spazi, dovresti usare l' print0opzione per essere più sicuro.
slhck,

Solo find -print0non aiuterà, usa anche xargs -0:find . -type f -name "*.ext" -print0 | xargs -0 grep "string"
BurninLeo

0

Per elencare il nome del file, il numero di riga nel file specificato e la riga appare il testo:

for x in *.xxx; do [ -r $x ] | cat $x | grep -n TEXT | xargs printf "$x:%s\n";done

Funzionerà solo nella directory corrente, ma lo formatterà bene per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.