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 -print0
argumento (junto com o -0
argumento 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, find
que grep
a xargs grep
faz sentido para mim, mas estou aberto a outras abordagens que produzem os mesmos resultados.
xargs
usando o-i
parâmetro à lacat sample.txt | grep "pat t ern" | xargs -i grep "{}"
- os chavetas indicam onde posicionar o argumento. O manual me diz que isso-i
foi preterido em favor,-I
então talvez valha a pena dar uma olhada nisso também.