Назад | Перейти на главную страницу

Искать несколько строк из нескольких файлов

Как искать несколько строк из нескольких файлов с помощью одной команды. Может использоваться grep или find, или если есть другие в Linux или Solaris

find $BASEDIR -type f -exec egrep 'string1|string2|string3' $file /dev/null \;

где $BASEDIR является корнем поисковой операции. Вы также можете поумничать с egrep -R, но я предпочитаю найти, поскольку могу более избирательно подходить к файлам, добавляя -name foo\* , -mtime -100 или аналогичные квалификаторы.

Решение MadHatter, безусловно, будет работать, однако более простая команда, imho, будет использовать рекурсивный флаг (e) grep. Такие как:

egrep -r 'regex1|regex2' /foo/bar/*

В зависимости от того, что удобнее рассматривать коллекцию файлов в иерархии, выше или как конечный набор, используя подстановку оболочки как:

egrep 'regex1|regex2' /foo/bar/{file1,file2}