Estoy buscando archivos basados en una expresión regular, y luego intento buscar contenido en esos archivos. Entonces, por ejemplo, tengo algo como
#Find all C++ files that match a certain pattern and then search them
find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>"
El problema con el que me encuentro es que algunos de los caminos tienen espacios en ellos, lo que confunde xargs
. Sé que si solo estuviera usando find
, podría usar el -print0
argumento (junto con el -0
argumento encendido xargs
) para evitar que los xargs traten los espacios como delimitadores. ¿Hay algo similar con grep
?
¿O estoy abordando este problema por completo de manera incorrecta? Ingenuamente, find
a grep
que xargs grep
tiene sentido para mí, pero estoy abierto a otros enfoques que permitan obtener los mismos resultados.
xargs
uso del-i
parámetro, a lacat sample.txt | grep "pat t ern" | xargs -i grep "{}"
- las llaves indican dónde colocar el argumento. El manual me dice que-i
está en desuso, por-I
lo que quizás valga la pena echarle un vistazo también.