2012-09-10 13 views
6

Come posso rendere il comando grep individuare determinate parole nei file specificati dalle route trovate dal comando locate?Utilizzare il comando grep e individuare

locate my.cnf | grep user 

(voglio che grep comando di ricerca la parola "utente" sui file trovati per individuare comando)

risposta

10

Invece di una sostituzione di comando pipe, uso:

grep user `locate my.cnf` 
+0

Mi piace questo meglio dell'approccio 'xargs' qui sotto perché mantiene l'evidenziazione di grep –

+0

@moeso: Puoi ottenere grep per dare sempre output a colori con' --color = always'. – cha0site

0

Probabilmente grep user $(locate my.cnf) è quello che stai cercando, se ho capito bene la tua domanda.

+3

Si noti che questo si bloccherà e brucerà se il comando 'locate' restituisce troppi dati. La dimensione della riga di comando non è infinita. – cha0site

10

Prova:

locate my.cnf | xargs grep user 
+0

Questa opzione è corretta, ma Matt ha risposto per primo e funziona. Grazie. – Jhonathan

+2

@Jhonathan - se il risultato è abbastanza piccolo, l'opaco funziona. Se il risultato può essere arbitrariamente grande, dovresti preferire 'xargs'. –

0

Al fine di bel gioco con situazioni in cui individuare i risultati hanno spazi nei nomi, si potrebbe fare questo

locate -0 my.cnf | xargs -n1 -0 grep user 
+0

Mostra la stessa uscita tre volte – Jhonathan

+0

Senza alcun parametro 'grep' restituisce automaticamente tutte le linee corrispondenti (il file probabilmente ha più righe corrispondenti). Se desideri mostrare i numeri di riga davanti a loro, puoi usare l'opzione '-n' per grep. Altrimenti, si potrebbe avere output solo la prima corrispondenza per ogni file con '-m 1' o solo il nome del file che corrisponde a' -l'. –

+0

Hai ragione. Scusate, – Jhonathan

Problemi correlati