2013-02-13 53 views
1

我需要在幾個以.cpp結尾的文件中找到「[0]」和「[1]」的所有實例。這些文件位於不同的子目錄中。使用sed掃描C++文件

是否可以使用sed掃描子目錄中的所有.cpp文件並查找模式?

謝謝!

+2

這有什麼錯' grep'或'ack'? – 2013-02-13 12:39:07

+0

絕對是[tag:ack]的工作。或者[tag:git]'-grep'。 – Johnsyweb 2013-02-13 12:41:41

+1

建議使用'grep -R'\ [[01] \]「*'來掃描所有文件,如果有很多非cpp文件,請追加'| grep「\ .cpp」' – fiz 2013-02-13 12:43:25

回答

1

別碰sed,它是小號 tream iting,而不是搜索。使用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:'