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 find
y xargs
serí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
-R
opción que con las versiones modernas de GNUgrep
sigue enlaces simbólicos al descender directorios. En su lugar, utilice la-r
opció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
find
comando 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
grep
banderas ...-c
devolverá 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.-v
tomará la salida de la primeragrep
bú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 palabraNAVIGATE
en el.
directorio actual.fuente
Darle la lista de
.q
archivos que contiene la palabra clavetrim
fuente