grep senza mostrare path / file: line


234

Come si grep e restituisce solo la riga corrispondente? vale a dire, il percorso / nome file viene omesso dai risultati.

In questo caso voglio cercare in tutti i file .bar nella directory corrente, cercando il termine FOO

find . -name '*.bar' -exec grep -Hn FOO {} \;

Risposte:


375

Non è necessario find. Se stai solo cercando un modello all'interno di una directory specifica, questo dovrebbe essere sufficiente:

grep -hn FOO /your/path/*.bar

Dov'è -hil parametro per nascondere il nome file, come da man grep:

-h, --no-nomefile

Sopprime il prefisso dei nomi dei file in uscita. Questo è il valore predefinito quando c'è un solo file (o solo input standard) da cercare.

Nota che stavi usando

-H, --with-nomefile

Stampa il nome del file per ogni corrispondenza. Questo è il valore predefinito quando c'è più di un file da cercare.


il numero di riga può essere omesso?
Javavba,

@javadba probabilmente stai usando un alias, digita alias grep. Per omettere l'alias, digita\grep ...
fedorqui "SO smetti di danneggiare" il

1
Sì, stava usando l'alias.
Javavba,

8

Sostituisci -Hcon -h. Controlla man grepper maggiori dettagli sulle opzioni

find . -name '*.bar' -exec grep -hn FOO {} \;

6

Dalla pagina man:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.
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.