Igual que -L
busca el contenido de un archivo sin una coincidencia, -l
busca el contenido de un archivo con una coincidencia.
Por lo tanto, deberá especificar el indicador -l
en el segundo «grepping».
Además, necesitará dirigir la salida del primer grep
al segundo como argumentos de línea de comando. Esto se puede hacer usando xargs
, que es una herramienta para leer elementos de la entrada estándar. La canalización de los nombres de los archivos directamente haría que el segundo grep buscara la cadena authenticate
en el archivo nombres .
por lo que debería terminar con algo como
grep -r --color -L "class public interface" * | xargs grep -l "authenticate"`
Tenga en cuenta que xargs
por defecto divide la entrada en cualquier espacio en blanco, así que si tiene nombres de archivo con espacios (o algo peor), «necesitarás usar grep -Z
y xargs -0
para tener los nombres de archivo separados por bytes NUL. ( En GNU grep, es decir. Otros pueden ser diferentes, por ejemplo, FreeBSD grep tiene --null
en su lugar.)
Comentarios