GNU/Linux >> Linux Esercitazione >  >> Linux

Come cercare in file specifici che corrispondono a un modello?

Come posso trovare una parola in file specifici che corrispondono a un modello. per esempio. cercando version in CMake* file trovati ricorsivamente nella directory corrente.

Risposta accettata:

Se vuoi vedere il nome del file e il numero di riga, POSIXly:

find . -name 'CMake*' -type f -exec grep -nF /dev/null version {} +

(non vuoi usare ; qui che eseguirebbe un grep per file). Questo è l'equivalente standard dello GNUismo:

find . -name 'CMake*' -type f -print0 | xargs -r0 grep -nHF {} +

find (nella prima), xargs (nel secondo) passerà tanti argomenti a grep possibile senza superare il limite del numero di argomenti che puoi passare a un comando. Quando si esegue la divisione, potrebbe accadere che per l'ultima esecuzione venga passato un solo argomento a grep nel qual caso grep non stamperebbe il nome del file. Ecco perché hai bisogno di /dev/null lì (o -H con GNU grep ).

Con -type f , stiamo considerando solo file normali (non dispositivi, collegamenti simbolici, pipe, directory...).

Se vuoi usare GNUisms, puoi usare GNU grep possibilità di discendere un albero di directory:

 grep -rHnF --include='CMake*' version .

Non vuoi usare -R poiché ciò causa grep per seguire i collegamenti simbolici quando si scende dall'albero delle directory e si legge da dispositivi, fifo, socket...

Quella versione è più sicura ed efficiente, ma non portatile.


Linux
  1. Come utilizzare il comando Grep per trovare testo nei file

  2. Come trovare file su Ubuntu?

  3. Come cercare i file per dimensione ed estensione?

  4. Come posso cercare uno schema multilinea in un file?

  5. Come utilizzare il comando find per eliminare i file che corrispondono a un modello?

Come trovare una stringa o una parola specifica in file e directory

Come escludere in Grep

Come eseguire la ricerca del modello nei file utilizzando Grep

Come trovare file contenenti una stringa di testo specifica in Linux

Come eseguire la ricerca Grep su tutti i file e in tutte le directory

Come trovare file in Debian