Estou pesquisando arquivos com base em uma expressão regular e, em seguida, tentando pesquisar conteúdo nesses arquivos. Então, por exemplo, eu tenho 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>"
O problema que estou enfrentando é que alguns dos caminhos têm espaços neles, o que confunde xargs. Eu sei que, se eu estivesse usando find, poderia usar o -print0argumento (junto com o -0argumento xargs) para impedir que os xargs tratem os espaços como delimitadores. Existe algo semelhante com grep?
Ou estou abordando esse problema de maneira totalmente errada? Ingenuamente, findque grepa xargs grepfaz sentido para mim, mas estou aberto a outras abordagens que produzem os mesmos resultados.
xargsusando o-iparâmetro à lacat sample.txt | grep "pat t ern" | xargs -i grep "{}"- os chavetas indicam onde posicionar o argumento. O manual me diz que isso-ifoi preterido em favor,-Ientão talvez valha a pena dar uma olhada nisso também.