Me gustaría enumerar los archivos de forma recursiva y única que contienen la palabra dada.
Ejemplo : Comprobando la palabra 'check', lo normal es un grep
$ grep check * -R
Pero como hay muchas apariciones de esta palabra, obtengo mucha salida. Entonces solo necesito enumerar los nombres de archivo que contienen la palabra de búsqueda dada. Supongo que algún truco findy xargssería suficiente aquí, pero no estoy seguro.
¿Algunas ideas?
fuente

grep -rl "text to find" "/usr/share"y funcionó muy bien!Probablemente no desee utilizar la
-Ropción que con las versiones modernas de GNUgrepsigue enlaces simbólicos al descender directorios. En su lugar, utilice la-ropción que desde la versión 2.12 (abril de 2012) ya no sigue los enlaces simbólicos.Si su grep no es el GNU, o es anterior a la versión 2.12, o si necesita que su código sea portátil a sistemas GNU que no sean de vanguardia, use el
findcomando anterior.De lo contrario, puedes hacer:
No lo use
*(ya que eso omitiría los archivos ocultos en el directorio actual (y solo en el directorio actual) y causaría problemas para los archivos cuyo nombre comienza con a-), evite pasar opciones después de los argumentos, ya que no se garantiza que funcione dependiendo de Medio ambiente y no es portátil.fuente
Prueba esto:
En cuanto a las
grepbanderas ...-cdevolverá un nombre de archivo seguido de: y un número que indica cuántas veces aparece la cadena de búsqueda en el archivo dado.-vtomará la salida de la primeragrepbúsqueda, filtrará los archivos con cero resultados e imprimirá solo los archivos con resultados distintos de cero.fuente
:0. Es mejor que hacergrep -v ':0$'. Incluso eso se ahogará con los nombres de ruta que contienen líneas nuevas.grep -rin "whatToFind" locationToFInd
por ejemplo, $ grep -rin "vihaan".
buscará y enumerará recursivamente los nombres de archivo y las líneas correspondientes que tienen "vihaan" en ellos, "." se refiere al directorio actual.
fuente
buscar en el directorio actual. Para buscar desde la raíz, especifique en
/lugar de.fuente
grep -lR "text-to-find" <where-to-find>También funciona bien.por ejemplo,
grep -lR "NAVIGATE" .donde encontramos la palabraNAVIGATEen el.directorio actual.fuente
Darle la lista de
.qarchivos que contiene la palabra clavetrimfuente