2013-02-13 3 views
1

Мне нужно найти все экземпляры «[0]» и «[1]» в нескольких файлах, заканчивающихся на .cpp. Файлы находятся в разных подкаталогах.Использование sed для сканирования файлов C++

Можно ли использовать sed для сканирования всех файлов .cpp в подкаталогах и поиска шаблона?

Спасибо!

+2

Что случилось с ' grep' или 'ack'? –

+0

Определенно работа для [tag: ack]. Или [tag: git] '-grep'. – Johnsyweb

+1

Как и было предложено, перейдите к 'grep -R" \ [[01] \] "*' для сканирования всех файлов, а если есть для многих файлов, отличных от cpp, добавьте '| grep "\ .cpp" ' – fiz

ответ

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:' 
Смежные вопросы