1

我需要在几个以 .cpp 结尾的文件中找到“[0]”和“[1]”的所有实例。这些文件位于不同的子目录中。

是否可以使用 sed 扫描子目录中的所有 .cpp 文件并查找模式?

谢谢!

4

1 回答 1

1

别管它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:'
于 2013-02-13T12:53:56.570 回答