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.