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 -print0argumento (junto con el -0argumento 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, finda grepque xargs greptiene sentido para mí, pero estoy abierto a otros enfoques que permitan obtener los mismos resultados.
xargsuso del-ipará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-iestá en desuso, por-Ilo que quizás valga la pena echarle un vistazo también.