вторник, 24 июля 2007 г.

Поиск строки в файлах

Есть несколько способов поиска строки в файлах.
Можно использовать cat:

cat file_mask | grep word_mask

Такой метод выводит только найденные стоки, но без указания файла, а это не всегда удобно. Поэтому можно использовать find:

find start_point -name file_mask -exec grep word_mask {} \; -print

Ключ -exec command {} \; выполняет над найденным файлом указанную команду (command).
start_point, file_mask, word_mask - соответственно директория поиска, маска файлов, выражение для поиска строки и ключи grep'a.

5 комментариев:

spk комментирует...

может это зависит от шела под каким работаешь, но мне кажется, что фигурные скобочки надо еще взять в одинарные кавычки: '{}'

т.е.:
find start_point -name file_mask -exec grep word_mask '{}' \; -print

хотя хз.. на википедии встречается и так и так.. но точно помню, что у меня работало со скобочками :)

sash_ko комментирует...

То что я тут написал, у меня работает без скобок в баше.

sash_ko комментирует...

да и маны про кавычки ничего не пишут

sash_ko комментирует...

а ваще работает и так и так :)

swd комментирует...

grep -rl 'text' /path/

где text – искомая строка,
а /path/ – путь по которому искать