我需要在几个以 .cpp 结尾的文件中找到“[0]”和“[1]”的所有实例。这些文件位于不同的子目录中。
是否可以使用 sed 扫描子目录中的所有 .cpp 文件并查找模式?
谢谢!
别管它sed
,它是用于流式传输,而不是搜索。使用grep
.
find . -iname '*.cpp' | while read filename; do grep --with-filename '\[[01]\]' "$filename"; done
或者在脚本中:
find . -iname '*.cpp' | while read filename
do
grep --with-filename '\[[01]\]' "$filename"
done
我在read
这里使用(和引号$filename
),以便带有空格的文件名生存;在 Windows 系统中,这是一个特别的噩梦。
如果你知道你的文件都不是特别大,你可以牺牲搜索效率来换取输入效率并搜索所有文件,但只从 cpp 文件中挑选输出:
grep -r '\[[01]\]' . | grep '.cpp:'