我正在基于正则表达式搜索文件,然后尝试在这些文件中搜索内容。例如,我有类似
#Find all C++ files that match a certain pattern and then search them
find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>"
我遇到的问题是某些路径中有空格,这会造成混淆xargs
。我知道,如果我只是使用find
,则可以使用-print0
参数(以及上的-0
参数xargs
)来防止xargs将空格视为定界符。有类似的东西grep
吗?
还是我完全以错误的方式解决了这个问题?天真,find
要grep
以xargs grep
对我来说很有意义,但我持开放的态度产生相同的结果的其他方法。
xargs
使用-i
参数la 来定位参数,cat sample.txt | grep "pat t ern" | xargs -i grep "{}"
大括号告诉它参数的位置。该手册告诉我,-i
不建议使用,-I
因此也许也值得一看。